2016-04-19 18 views
1

私のウェブサイトにAndroidアプリケーションを作成しています。それはポッドキャストのようないくつかのビデオを持っています。ユーザーが画面をロックしたり他のアプリケーションを使用したりしているときに、バックグラウンドでオーディオを再生できるようにする。これを実現するために、WebViewを導入しました。上記の機能を提供するために、私はそのアクティビティでPARTIAL_WAKE_LOCKを使用しようとしました。これは、画面がロックされているときにオーディオを再生し続けますが、ホームボタンが押されたとき(つまり、バックグラウンドで)は再生されません。この問題の回避策はありますか?あなたのアプリは、それが背景にある場合でも、オーディオを実行し続けるようにしたい場合はWebViewオーディオをバックグラウンドで再生する

+0

メディアプレーヤーで音声を再生するための回答が出ました。私は、webviewでビデオを再生し、バックグラウンドでオーディオを再生するために探しています。 –

+0

助けてくれてありがとう!とにかくサービスを使って解決しました。 –

+0

webViewを実行するために別のサービスを実装しましたが、まだこの問題があります。これをどうやって正しく行うかという手がかりがありますか? – aquawicket

答えて

0

、あなたは、バックグラウンドに行くか、戻ってくる。このサービスはさらにアプリを実行し続けますSeparate Service.

でのMediaPlayerを実行する必要があります。 アプリが強制終了された場合は、スティッキサービスを実行して(フォアグラウンドをtrueにして)実行することもできます。

+0

しかし、WebViewはUIエレメントなので、別のサービススレッドで実行できないと思っていました。 –

+0

@NathanMatthewsあなたは、そのオーディオをonPauseメソッドのどこかで一時停止していますか?理想的には、ホームボタンを押しただけで再生を続ける必要があります。 –

+0

スティッキーサービスが機能しました。ありがとうございます –

0

あなたはこの例では、あなたの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" /> 
+0

私は、webviewでビデオを再生し、バックグラウンドでオーディオを再生したいと考えています。 –