2016-04-19 266 views
1

我正在为我的网站制作Android应用程序。它有一些有点像播客的视频。我希望应用程序能够在用户锁定屏幕或使用其他应用程序时在后台播放音频。为了达到这个目的,我有一个WebView。为了提供上述功能,我尝试在活动中使用PARTIAL_WAKE_LOCK。当屏幕被锁定时,这只会继续播放音频,而不会在按下主屏幕按钮(即在后台)时播放音频。有没有解决这个问题的方法?在后台制作WebView音频播放

+0

我正在为媒体播放器播放音频获取答案。我正在寻找在webview上播放视频并继续在后台播放音频。 –

+0

感谢您的帮助!无论如何,我使用服务修复了它。 –

+0

我已经实现了一个单独的服务来运行webView,我仍然有这个问题。有没有更多的线索如何正确地做到这一点? – aquawicket

回答

0

如果您希望您的应用程序继续运行音频即使是在后台,你必须在Separate Service.

该服务将继续运行,即使该应用程序运行的媒体播放器切换到后台或者回来。 如果应用程序被杀死,您甚至可以编写粘性服务以保持运行(前景为true)。

+0

但我认为你不能在单独的服务线程中运行WebView,因为它是一个UI元素。 –

+0

@NathanMatthews你是否在onPause方法的某处暂停该音频。理想情况下,如果您刚刚按下主页按钮,它应该继续播放。 –

+0

粘滞服务工作。谢谢 –

0

你应该使用Android服务,在这个例子中播放音乐无关的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上播放视频并继续在后台播放音频。 –