使用OnPreferenceChangeListener调用服务

时间:2015-06-30 15:41:53

标签: java android sensor

我正在编写一个应用程序,希望允许用户通过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复选框时没有反应,问题出在哪里?

0 个答案:

没有答案