簡體   English   中英

無法在android中獲取接近傳感器的值

[英]Not able to get proximity sensor's values in android

有人可以舉例說明如何使用接近傳感器嗎? 我嘗試以與其他傳感器相同的方式使用它,但它不起作用。

這是我一直在使用的代碼片段:

 final SensorManager mSensorManager;
 final Sensor mproximity;

mSensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
mproximity =  mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);

mSensorManager.registerListener(new SensorListener(){

public void onAccuracyChanged(int arg0, int arg1) {
   // TODO Auto-generated method stub
   Toast.makeText(test.this,"proximity sensor accu ", Toast.LENGTH_SHORT).show();
}

public void onSensorChanged(int arg0, float[] arg1) {
   // TODO Auto-generated method stub
   Toast.makeText(test.this,"proximity sensor ", Toast.LENGTH_SHORT).show();
}

}, Sensor.TYPE_PROXIMITY, 1);

請告訴我哪里出錯了。

該方法registerListener(SensorListener, int, int)已過時,使用registerListener(SensorEventListener, Sensor, int)代替:

mSensorManager.registerListener(proximityListener,
        mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),
        SensorManager.SENSOR_DELAY_UI);

此外,您應該保存對Sensor(Event)Listener的引用,以便能夠取消注冊它。

Gubbel提出了一個有效的觀點。 請使用最新的API。

另請注意,接近傳感器的實現方式與之不同
其他傳感器。 而其他傳感器可以“輪詢”了
接近傳感器是基於中斷的。

因此,只有在接近狀態時才會獲得onSensorChanged事件
過渡發生(即近遠或遠近)。

通常,接近傳感器使用光傳感器硬件實現。
因此,您可以啟動應用程序並覆蓋/揭開頂部的光傳感器
你的設備。 這樣做會觸發接近傳感器轉換
然后你肯定會在你的應用程序中獲取數據(0/1或遠/近)。

有關Android接近傳感器的更多信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM