2010-11-23 6 views
3

あなたは光センサーが作動しているAndroidの中で電話で話します。 画面の左上を覆うと、ディスプレイが黒く表示され、何も表示されません。無効にライトセンサー - アンドロイド

私はその機能をキャンセルしたいと思いますが、Android SensorsLight Sensorで作業を試みましたが、機能しません。

senMgrLight=(SensorManager)getSystemService(Context.SENSOR_SERVICE); 
    senMgrLight.registerListener(onSensorListener, 
      senMgrLight.getDefaultSensor(Sensor.TYPE_LIGHT), 
       SensorManager.SENSOR_DELAY_FASTEST); 

ありがとう:

は、これは私のコードです。

答えて

2

あなたがで作業する必要があるセンサーは、近接センサである、 これはセンサーが隠されているかいないかどうかを知るようになる(としばらくお電話で、それは動作します)、これを試して

SensorManager sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE); 
     sm.registerListener(new SensorEventListener() { 

      @Override 
      public void onSensorChanged(SensorEvent event) { 
       Log.i(TAG,"sensor: " + event.sensor.getName() + ", values: " + Arrays.toString(event.values)); 

      } 

      @Override 
      public void onAccuracyChanged(Sensor sensor, int accuracy) { 
       Log.i(TAG,"accuracy change: " + sensor + ", accuracy: " + accuracy); 

      } 
     }, sm.getDefaultSensor(Sensor.TYPE_PROXIMITY),SensorManager.SENSOR_DELAY_FASTEST); 
1

Settings.Systemを使用して、コールが行われる前にgetInt()でSCREEN_BRIGHTNESSSCREEN_BRIGHTNESS_MODEを読み込みます。次に、setInt()を使って新しい値を設定します。つまり明るさは255、モードはSCREEN_BRIGHTNESS_MODE_MANUALです。最大値で一定の明るさが得られるはずです。コールがハングアップした後

あなたは()にsetIntを経由して値を変更する前に、保存された古い値を復元することができますので、ユーザーは自分の初期設定を取り戻します。あなたは、古いAndroidのバージョンをターゲットにしたい場合は、あまりにも、リフレクションを使用する必要がありますので:-)

は、モードは、Android 2.2以降(APIレベル8)のためにのみ利用可能であることを忘れないでください。もちろん、システム設定を書き込むための権限が必要です。

+0

は画面が暗く取得するだけでなく、携帯電話のアプリでプロキシセンサーのレジスタを削除することができますが、ボタンがあまりにも動作を停止します。これは、コール時に偶発的なタッチイベントを無効にするための近接センサーの「機能」キックインです。結果を修正するのではなく、ここで原因を「攻撃する」方が良いでしょう。ええ? – TheCodeArtist

1

画面オフは、プロキシセンサーなく、光センサーによって制御されます。 あなたが

関連する問題