Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能让android在通话中做出反应,并触发接近传感器?_Android_Sensors_Proximity - Fatal编程技术网

我怎样才能让android在通话中做出反应,并触发接近传感器?

我怎样才能让android在通话中做出反应,并触发接近传感器?,android,sensors,proximity,Android,Sensors,Proximity,我有一个可以进行VoIp呼叫的应用程序。在这些通话中,我希望屏幕的反应与正常通话时完全相同。也就是说,我希望屏幕禁用所有事件,并在用户触发接近传感器时关闭。当然,当用户将耳朵从手机上移开时,我希望手机打开屏幕并启用所有事件。我曾经试过自己关掉屏幕。从来没用过。因此,我认为我已经使用了这个解决方案。我发现了一个类似的问题,它使用Android手机应用程序中的示例提供了一些关于接近传感器的重要信息 以下是可能对您有所帮助的代码。这演示了如何使用SensorManager类访问接近传感器,这里接近传感

我有一个可以进行VoIp呼叫的应用程序。在这些通话中,我希望屏幕的反应与正常通话时完全相同。也就是说,我希望屏幕禁用所有事件,并在用户触发接近传感器时关闭。当然,当用户将耳朵从手机上移开时,我希望手机打开屏幕并启用所有事件。我曾经试过自己关掉屏幕。从来没用过。因此,我认为我已经使用了这个解决方案。

我发现了一个类似的问题,它使用Android手机应用程序中的示例提供了一些关于接近传感器的重要信息


以下是可能对您有所帮助的代码。这演示了如何使用SensorManager类访问接近传感器,这里接近传感器将触发一个事件,它调用一个方法来更改图像视图。您可以在该方法上尝试您的代码……,获取全部信息


谢谢你的链接。我阅读了它并使用以下代码打开传感器:PowerManager pm=(PowerManager)getSystemService(Context.POWER\u SERVICE);mProximityWakeLock=pm.newWakeLock(32,“礼炮”);//32对应于恒定功率管理器。当传感器检测到接近物体时,接近\屏幕\关闭\唤醒\锁定//自动。如果(!mProximityWakeLock.isHeld()){mProximityWakeLock.acquire();}并释放以关闭传感器。
public class MainActivity extends Activity {
SensorManager sm;
Sensor ProximitySensor;
boolean state=true;
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txstate= (TextView) findViewById(R.id.txstate);
    sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
    ProximitySensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    sm.registerListener(proximitySensorEventListener,  ProximitySensor, SensorManager.SENSOR_DELAY_FASTEST);


}
SensorEventListener proximitySensorEventListener = new SensorEventListener()
{   
  @Override
  public void onAccuracyChanged(Sensor sensor, int accuracy) 
  {

  }
@Override
public void onSensorChanged(SensorEvent event) 
{
if(event.sensor.getType()==Sensor.TYPE_PROXIMITY)


    {if((int)(event.values[0])==1)

        {

                    call();
        }
    }

}

private void call() 

{
        ImageView im = (ImageView) findViewById(R.id.imageView1);
        if(state)
        {
            state =false;                
            im.setImageResource(R.drawable.smile);                   
        }
        else 
        {
            state=true;              
            im.setImageResource(R.drawable.sad);             
        }
    }
};
}