Android 是否可以使用接近传感器拨打电话号码?

Android 是否可以使用接近传感器拨打电话号码?,android,Android,我正在尝试制作一个应用程序,只需将palm悬停在android设备上就可以拨打某个号码。我已经为此创建了一个后台服务。但当我启动服务并在我的设备上挥手时,应用程序崩溃了!所以我的问题是,是否可以利用传感器读数的变化来拨打某个电话?这是我的服务等级代码 public class ProxService extends Service implements SensorEventListener { SensorManager manager; Sensor prox;

我正在尝试制作一个应用程序,只需将palm悬停在android设备上就可以拨打某个号码。我已经为此创建了一个后台服务。但当我启动服务并在我的设备上挥手时,应用程序崩溃了!所以我的问题是,是否可以利用传感器读数的变化来拨打某个电话?这是我的服务等级代码

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