Android 是否可以使用接近传感器拨打电话号码?
我正在尝试制作一个应用程序,只需将palm悬停在android设备上就可以拨打某个号码。我已经为此创建了一个后台服务。但当我启动服务并在我的设备上挥手时,应用程序崩溃了!所以我的问题是,是否可以利用传感器读数的变化来拨打某个电话?这是我的服务等级代码Android 是否可以使用接近传感器拨打电话号码?,android,Android,我正在尝试制作一个应用程序,只需将palm悬停在android设备上就可以拨打某个号码。我已经为此创建了一个后台服务。但当我启动服务并在我的设备上挥手时,应用程序崩溃了!所以我的问题是,是否可以利用传感器读数的变化来拨打某个电话?这是我的服务等级代码 public class ProxService extends Service implements SensorEventListener { SensorManager manager; Sensor prox;
public class ProxService extends Service implements SensorEventListener { SensorManager manager;
Sensor prox;
@Override
public IBinder onBind(Intent arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
manager = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
prox = manager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
manager.registerListener(ProxService.this,prox,SensorManager.SENSOR_DELAY_NORMAL);
return START_STICKY;
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
manager.unregisterListener(this);
Toast.makeText(getApplicationContext(),"Accelerometer Service Stopped!",0).show();
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
//Neglect it!
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
float reading;
reading = event.values[0];
//AM I GIVING RIGHT CONDITION HERE?
while(reading == 0.0){
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:+XXXXXXXXXX"));
startActivity(intent);
break;
}
}
}
我已检查清单中所需的所有必要权限 首先,根据文档,值[0]包含测量的传感器距离,单位为厘米。
代替while循环,您应该添加手是否足够近的条件:
// if hand is closer than 5 cm
if(reading < 5) {
// start activity
}
while条件与ifreading==0.0相同,因为断句,它从不循环。
此外,永远不要将float或double与==进行比较。读一读为什么
第二,请用异常日志更新您的问题,这样我们就可以看到是什么导致了它。这是我在代码中所做的更改。。。。。。浮动读数;读取=事件值[0];请尝试{ifreading