WakeLock nicht funktioniert
Habe ich ein wake-Sperre einrichten, so dass ich kann noch den Ton hören, wenn der Bildschirm mal aus oder ich drücken Sie die screen-lock-Taste. Von dem, was ich verstehen kann, durch das Lesen online ist, dass ich brauche nur ein partial wake lock. Hier ist der code, aber es funktioniert nicht. Kein logcat Fehler
package com.androidsleepmachine.gamble;
import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.os.PowerManager;
import android.view.KeyEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
public class Ship extends Activity implements View.OnClickListener {
public static final Integer[] TIME_IN_MINUTES = { 30, 45, 60, 180, 360 };
public MediaPlayer mediaPlayer;
public Handler handler = new Handler();
public Button button2;
public Spinner spinner2;
private PowerManager.WakeLock wl;
//Initialize the activity
@Override
public void onCreate(Bundle savedInstanceState) {
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "sleeplock");
super.onCreate(savedInstanceState);
setContentView(R.layout.ship);
button2 = (Button) findViewById(R.id.btn2);
button2.setOnClickListener(this);
spinner2 = (Spinner) findViewById(R.id.spinner2);
ArrayAdapter<Integer> adapter = new ArrayAdapter<Integer>(this,
android.R.layout.simple_spinner_item, TIME_IN_MINUTES);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner2.setAdapter(adapter);
}
//Play the sound and start the timer
private void playSound(int resourceId) {
//Cleanup any previous sound files
cleanup();
//Create a new media player instance and start it
mediaPlayer = MediaPlayer.create(this, resourceId);
mediaPlayer.start();
//Create the timer to stop the sound after x number of milliseconds
int selectedTime = TIME_IN_MINUTES[spinner2.getSelectedItemPosition()];
handler.postDelayed(runnable, selectedTime * 60 * 1000);
}
//Handle button callback
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn2:
wl.acquire();
playSound(R.raw.ocean_ship);
break;
}
}
protected void onStop()
{
cleanup();
super.onStop();
}
//Stop the sound and cleanup the media player
public void cleanup() {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.release();
mediaPlayer = null;
wl.release();
}
//Cancel any previously running tasks
handler.removeCallbacks(runnable);
}
//Runnable task used by the handler to stop the sound
public Runnable runnable = new Runnable() {
public void run() {
cleanup();
}
};
}
- Haben Sie die Erlaubnis in-manifest für wake-lock?
- mögliche Duplikate von Mit einem wake-lock
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich wäre überrascht, wenn Di Vero Labs die Antwort dieses Problem gelöst, da die Android-Dokumentation steht, dass diese zusätzlichen flags nichts zu tun mit einem partial wakelock.
Einen wakelock ist so einfach, wie Sie es verwenden, und es sollte funktionieren:
Beachten Sie, dass Sie überprüfen müssen, um für null-Werte, und überprüfen Sie, dass es nicht bereits erworben, etc, bevor Sie diese Methoden, oder Sie bekommen einen null-Zeiger-Ausnahme.
Ich denke, dein Problem ist, dass Sie anrufen cleanup (), das mit dem wakelock release, so dass Sie nicht wirklich halten einen wakelock. Stellen Sie sicher, dass das funktioniert (obwohl möglicherweise Akku drain Probleme) halten Sie Ihr wakelock im Voraus, dann loslassen, wenn Sie fertig sind, nicht, bevor Sie fertig sind, sonst werden Sie offensichtlich NICHT, einen wakelock.
War ich mit einer Tonne von Fragen, weil wakelocks nicht funktioniert, aber glauben, dass ich nagelfest ist die Frage zu einem custom ROM. Also Vorsicht! (KEINE Unterstützung für benutzerdefinierte ROMs, einschließlich Ihrer eigenen!)
Versuchen:
Ich habe festgestellt, das die Option "PowerManager.ACQUIRE_CAUSES_WAKEUP" lindert einige der gleichen Probleme, die ich hatte.
Stellen Sie außerdem sicher:
ist, erklärte in Ihrem manifest.