0
我製作了一個程序,用於監視加速度傳感器,並在服務中使用TTS測量某個值時說出了一些內容。設備開啓時一切正常,但當它進入休眠狀態時,它有時可以正常工作,有時它會在一段時間後有效,有時它可以正常工作,就像我按下電源按鈕喚醒設備,有時它根本不起作用。有什麼想法嗎?當設備處於睡眠狀態時,TTS不起作用
public class MyService extends Service implements SensorEventListener, OnInitListener {
private SensorManager SenMan;
private Sensor AccSen;
private TextToSpeech mTTS = null;
private PowerManager pm;
private WakeLock wl;
@Override
public IBinder onBind(Intent arg0) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
SenMan = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
AccSen = SenMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
SenMan.registerListener(this, AccSen, SensorManager.SENSOR_DELAY_NORMAL);
pm = (PowerManager)getSystemService(POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "TAG");
}
@Override
public void onDestroy() {
SenMan.unregisterListener(this);
super.onDestroy();
}
@Override
public final void onAccuracyChanged(Sensor sensor, int accuracy) {}
@Override
public final void onSensorChanged(SensorEvent event) {
double a = Math.sqrt(Math.pow(event.values[0], 2) + Math.pow(event.values[1], 2) + Math.pow(event.values[2], 2));
if (Math.abs(a - 9.8)/0.98 > 25) Say();
}
private void Say() {
wl.acquire();
mTTS = new TextToSpeech(this, this);
}
@Override
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS)
mTTS.speak("Text to say", TextToSpeech.QUEUE_FLUSH, null);
wl.release();
}
}
當然,我不希望它的工作,而電池被刪除或設備已被砸碎到位!這是android的最大問題之一。我看到其他人也有同樣的問題。在用戶希望智能手機執行許多任務時,監控傳感器並根據其值確定設備是否需要睡眠時的值。 – Vahid