私のウェブサイトにAndroidアプリケーションを作成しています。それはポッドキャストのようないくつかのビデオを持っています。ユーザーが画面をロックしたり他のアプリケーションを使用したりしているときに、バックグラウンドでオーディオを再生できるようにする。これを実現するために、WebViewを導入しました。上記の機能を提供するために、私はそのアクティビティでPARTIAL_WAKE_LOCKを使用しようとしました。これは、画面がロックされているときにオーディオを再生し続けますが、ホームボタンが押されたとき(つまり、バックグラウンドで)は再生されません。この問題の回避策はありますか?あなたのアプリは、それが背景にある場合でも、オーディオを実行し続けるようにしたい場合はWebViewオーディオをバックグラウンドで再生する
答えて
、あなたは、バックグラウンドに行くか、戻ってくる。このサービスはさらにアプリを実行し続けますSeparate Service.
でのMediaPlayerを実行する必要があります。 アプリが強制終了された場合は、スティッキサービスを実行して(フォアグラウンドをtrueにして)実行することもできます。
しかし、WebViewはUIエレメントなので、別のサービススレッドで実行できないと思っていました。 –
@NathanMatthewsあなたは、そのオーディオをonPauseメソッドのどこかで一時停止していますか?理想的には、ホームボタンを押しただけで再生を続ける必要があります。 –
スティッキーサービスが機能しました。ありがとうございます –
あなたはこの例では、あなたのactivity.Pleaseルックの音楽の独立を再生するにはアンドロイドサービスを使用する必要があります。ここでは
は私のAndroidのサービスクラスである:ここで
class MusicService extends Service implements OnCompletionListener {
MediaPlayer mediaPlayer;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
mediaPlayer = MediaPlayer.create(this, R.raw.s);// raw/s.mp3
mediaPlayer.setOnCompletionListener(this);
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
if (!mediaPlayer.isPlaying()) {
mediaPlayer.start();
}
return START_STICKY;
}
public void onDestroy() {
if (mediaPlayer.isPlaying()) {
mediaPlayer.stop();
}
mediaPlayer.release();
}
public void onCompletion(MediaPlayer _mediaPlayer) {
stopSelf();
}
}
アクティビティです:
public class MusicActivity extends Activity implements OnClickListener {
Button startPlaybackButton, stopPlaybackButton;
Intent playbackServiceIntent;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
startPlaybackButton = (Button) this.findViewById(R.id.StartPlaybackButton);
stopPlaybackButton = (Button) this.findViewById(R.id.StopPlaybackButton);
startPlaybackButton.setOnClickListener(this);
stopPlaybackButton.setOnClickListener(this);
playbackServiceIntent = new Intent(this,MusicService.class);
}
public void onClick(View v) {
if (v == startPlaybackButton) {
startService(playbackServiceIntent);
finish();
} else if (v == stopPlaybackButton) {
stopService(playbackServiceIntent);
finish();
}
}
}
マニフェストファイルにサービスを追加することを忘れないでください。
<service android:enabled="true" android:name=".services.MusicService" />
私は、webviewでビデオを再生し、バックグラウンドでオーディオを再生したいと考えています。 –
メディアプレーヤーで音声を再生するための回答が出ました。私は、webviewでビデオを再生し、バックグラウンドでオーディオを再生するために探しています。 –
助けてくれてありがとう!とにかくサービスを使って解決しました。 –
webViewを実行するために別のサービスを実装しましたが、まだこの問題があります。これをどうやって正しく行うかという手がかりがありますか? – aquawicket