我正在编写一个应用程序,希望允许用户通过Proximity传感器接听电话。我有一个名为“main
”的班级和其他班级“SensorService
”
public class main extends PreferenceActivity{
SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting);
findPreference("AIR_CALL").setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if (newValue.toString().equals("true")) {
Intent intent = new Intent(main.this, Sensor.class);
startService(intent);
} else {
Toast.makeText(getApplicationContext(), "CB: " + "false",
Toast.LENGTH_SHORT).show();
}
return true;
}
});
}}
和传感器:
public class Sensor extends Service implements SensorEventListener {
TelephonyManager telephonyManager;
private SensorManager mSensorManager;
private android.hardware.Sensor mSensor;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(android.hardware.Sensor.TYPE_PROXIMITY);
mSensorManager.registerListener(this, mSensor,SensorManager.SENSOR_DELAY_NORMAL);
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.values[0] == 0) {
if ((!Prefrences.isAirAnswerOn) || (Prefrences.PHONE_STATE == null) || (Prefrences.PHONE_STATE.length() <= 0) || (!Prefrences.PHONE_STATE.equals(TelephonyManager.EXTRA_STATE_RINGING)))
{
Intent localIntent = new Intent("android.intent.action.MEDIA_BUTTON");
localIntent.putExtra("android.intent.extra.KEY_EVENT", new KeyEvent(1, 79));
getApplicationContext().sendOrderedBroadcast(localIntent, null);
}
}
}
@Override
public void onAccuracyChanged(android.hardware.Sensor sensor, int accuracy) {
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
但是当我点击On复选框时没有反应,问题出在哪里?