0

Android のバックグラウンドでプログラムを実行しようとしています。多くのサービスの例を試しましたが、複雑になりました。電話を裏返すとサイレントになるシンプルなアプリを実行しようとしています(ビルド機能が存在することは知っていますが、電話を背面に置いたときにサイレントにするために、電話を「顔」に置くだけです
。サイレントモードです)。 電話をポケットに入れると、磁場は「y」「-num」にあることを示します(numは数字を意味します)。 しかし、電話を逆さまにすると"+num"になります。 電話を無音にして音を出すコードは次のとおりです。


package com.magnet2.com;

private SensorManager mSensorManager;
private Sensor mSensor;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

@Override
protected void onResume() {
    super.onResume();
    mSensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
}

  @Override
  protected void onPause() {
    super.onPause();
    mSensorManager.unregisterListener(this);
  }

@Override
public void onSensorChanged(SensorEvent event) {

    if (event.values[1] >= 29 )
    {

        ((AudioManager) getSystemService(AUDIO_SERVICE))
          .setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

    }
    if (event.values[1] <= -29 )
        if (event.values[2] >= -15 && event.values[2] <= 2 )
    {
        ((AudioManager) getSystemService(AUDIO_SERVICE))
        .setRingerMode(AudioManager.RINGER_MODE_NORMAL);
    }

  }

}  

しかし、バックグラウンドで実行する方法がわかりません。

4

1 に答える 1

0

continuously in the backgroundユーザーからの操作なしで何かを実行する必要があるこのような操作では、 Serviceクラスが最適な方法です。

また、サービスに慣れていない場合は、この質問でほとんどの疑問が解決し、Google 検索でオンライン チュートリアルにアクセスできます。

幸運を!

于 2012-09-01T11:08:07.230 に答える