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);
}
}
}
しかし、バックグラウンドで実行する方法がわかりません。