이것은 실제로 콜라주 프로젝트입니다. 요구 사항은 다음과 같습니다.백그라운드에서이 Android 코드를 실행하려면 어떻게해야합니까?
- 두 개의 센서 (근접 및 가속도계 사용)를 사용하여 Android 프로필을 벨소리, 진동 및 사일런스로 변경하는 앱을 만듭니다.
- 앱이 닫힌 후에도 앱이 백그라운드에서 실행되는지 확인하십시오.
- 센서를 계속해서 실행하면 배터리가 너무 많이 소모됩니다. 가능한 한 배터리 전력을 절약 할 수있는 무언가가 있습니까?
이미 NO : 1을 수행했으며 예상대로 작동하며, 2와 3 만 남았습니다. 어떤 것은 배경에서이 코드를 실행하는 가장 쉬운 방법이 될 것입니다 :이 같은 아이디어가 :
내가 시작하고 두 버튼을 사용하여 배경 서비스를 중지하고자합니다.
여기 NO에 대한 코드입니다 : 1.
public class SensorActivity extends Activity implements SensorEventListener{
private SensorManager mSensorManager;
private Sensor proxSensor,accSensor;
private TextView serviceStatus,profileStatus;
private Button startService,endService;
private boolean isObjectInFront,isPhoneFacedDown;
private AudioManager audioManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sensor);
audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
proxSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
accSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
isObjectInFront = false;
isPhoneFacedDown = false;
serviceStatus = (TextView) findViewById(R.id.textView_serviceStatus);
profileStatus = (TextView) findViewById(R.id.textView_profileStatus);
}
protected void onResume() {
super.onResume();
mSensorManager.registerListener(this, proxSensor, SensorManager.SENSOR_DELAY_NORMAL);
mSensorManager.registerListener(this, accSensor, SensorManager.SENSOR_DELAY_NORMAL);
}
protected void onPause() {
super.onPause();
mSensorManager.unregisterListener(this);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
if(event.values[0] > 0){
isObjectInFront = false;
}
else {
isObjectInFront = true;
}
}
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
if(event.values[2] < 0){
isPhoneFacedDown = true;
}
else {
isPhoneFacedDown = false;
}
}
if(isObjectInFront && isPhoneFacedDown){
audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
profileStatus.setText("Ringer Mode : Off\nVibration Mode: Off\nSilent Mode: On");
}
else {
if(isObjectInFront){
audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
profileStatus.setText("Ringer Mode : Off\nVibration Mode: On\nSilent Mode: Off");
}
else {
audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
profileStatus.setText("Ringer Mode : On\nVibration Mode: Off\nSilent Mode: Off");
}
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
}
}
당신은 배경에서 실행됩니다 서비스를 사용할 수 있으며, 배터리 소비를 최적화 할 수 있도록 브로드 캐스트 리시버를 설정할 수 있습니다 .. –
그을 추가 잊으 서비스를 시작하려면, 배경 기능을 수행해야합니다 서비스의 종류 및 종류를 사용하여 수행하십시오. –
서비스 및 방송 수신기에 대한 자습서가 많이 있습니다. Google에 전송할 수 있습니다. –