我知道这是android的多任务功能的一部分,但我找不到我的问题的解决方案.
我的应用程序中有一个媒体播放器对象播放音频片段,它一遍又一遍地循环播放,应该只在应用关闭时停止播放,它与正在播放没有声音的视频的VideoView一起运行(原因:我需要视频无缝循环,只有在没有声音附加到视频的情况下才会这样做.当视频停止时我需要声音停止(即当应用程序关闭时.我知道VideoView的方法是isPlaying()所以我猜它可能与此有关,但到目前为止我尝试的所有内容都失败了.
我需要使用线程吗?有没有办法从VideoView发出一条消息说它不再播放了?然后我可以在MediaPlayer对象上调用stop()方法.
我有一个名为play and stop的按钮,如果我按下它开始播放的话.我按下后停止进入主页.但是一旦完成播放,我需要自动进入主页.没有点击停止按钮.我怎么能为Android做到这一点?提前致谢
我目前有一个媒体播放器流式传输一些mp3文件.我想要做的是如果用户按下主页按钮退出应用程序,音乐将停止播放.我该怎么做呢?
我刚刚开始开发一个快速的Android应用程序.
小问题.什么是州4?
我正在使用MediaPlayer,每次运行应用程序时都会收到错误消息,指出Media Player"start()"首先在状态0中调用,然后是状态4.
有谁知道4是什么状态?
如果我知道状态1和2等状态,我可以找出问题...
谢谢,
我有一个我用C创建的媒体播放器,它与我在Python中运行的服务器一起运行.服务器接受命令以修改驻留在SQLite数据库中的播放列表.
一旦python代码更新数据库(这在媒体播放器正在播放时在后台发生),它需要让播放器知道数据库中有新的播放列表,以便它可以开始播放新文件.
我打算在数据库中设置一个标志,玩家可以不断轮询这个标志,但我不认为这是最好的方法.我能想到的所有选项都涉及媒体播放器不断检查某些内容.
最好的解决方法是什么?
我正在开发游戏应用程序.但音量控制存在问题.我想使用seekBar更改媒体播放器卷,而不是系统媒体卷.有没有通过seekBar改变媒体播放器音量的解决方案.
提前致谢.
我的代码就是这个
bv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(mp.isPlaying()){
mp.pause();
bv.setImageResource(R.drawable.playzz);
} else {
bv.setImageResource(R.drawable.pausezz);
for (int i=1; i<=10 ; i++){
mp.start();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我想重复一首歌只有10次.我用于循环,但声音只播放一次并停止.知道如何做到这一点?提前致谢.
不太容易解释:
我有这个应用程序流媒体在线广播.问题首先是m3u格式(android在某种程度上通常不能像pls那样流),所以我必须用这个ParserM3UToURL解析url(我找到了某个地方)...像这样:
Uri u = Uri.parse(ParserM3UToURL.parse(STREAM_URL, sdkVersion, c));
player = MediaPlayer.create(c, u);
Run Code Online (Sandbox Code Playgroud)
大多数它工作正常,但它有一个错误......
我正在两个旧设备2.2.2上测试这个.(api等级17),其他4.3(api等级23).旧设备工作正常.它可以通过wifi或移动数据流式传输无线电,但较新的设备在移动数据流上存在一些问题(在wifi上工作正常).应用程序崩溃,因为解析函数返回null:http://pastebin.com/ghbAqGzM
而且我认为有更多的手机4.x而不是2.x android.这当然对我来说非常痛苦.不知怎的,我必须解决这个问题.所以我真的希望有人会对此有所了解.我希望我的解释不要混淆......
这是ParserM3UToURL.parse()函数:
public static String parse(String paramString, int sdkVersion, Context c)
{
try
{
StrictModeWrapper.init(c);
HttpURLConnection localHttpURLConnection = (HttpURLConnection)new URL(paramString).openConnection();
InputStream localInputStream = localHttpURLConnection.getInputStream();
BufferedReader localBufferedReader = new BufferedReader(new InputStreamReader(localInputStream));
StringBuffer localStringBuffer = new StringBuffer();
while (true)
{
String str = localBufferedReader.readLine();
if (str == null)
{
localHttpURLConnection.disconnect();
localBufferedReader.close();
localInputStream.close();
break;
}
if (str.contains("http"))
{
localHttpURLConnection.disconnect();
localBufferedReader.close();
localInputStream.close();
return str; …Run Code Online (Sandbox Code Playgroud) 我正在开发一个测试应用程序,当自动测试过程结束时,播放警报声以通知操作员.
这个声音是一个3秒的持续时间警报铃声,我需要循环播放,直到用户触摸手机屏幕.
这是我实现媒体播放器的方式:
mp = MediaPlayer.create(MainActivity.this, R.raw.alarm);
try {
mp.prepare();
mp.setLooping(true);
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
}
Run Code Online (Sandbox Code Playgroud)
我已经定义了mp.setLooping应该使声音连续播放,但事实并非如此.
然后,停止触摸屏幕的声音:
@Override
public boolean onTouchEvent (MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
/*If sound is playing, stops*/
if (mp.isPlaying()) {
mp.stop();
}
return true;
}
return super.onTouchEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
所以,如果mp.setLooping不能正常工作,我应该如何连续播放声音呢?
我正在播放在线流媒体播放的媒体播放器:
mMediaPlayer = new MediaPlayer();
try {
mMediaPlayer.setDataSource("http://online-radioroks.tavrmedia.ua/RadioROKS");
mMediaPlayer.prepareAsync();
mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
start();
}
});
notifyCallbackListeners(PlayerCallbackEvent.PLAYER_SONG_CHANGE);
}
catch (IllegalArgumentException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
} catch (IllegalStateException ex){
ex.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
它运行正常,但是我可以从流中获取数据,就像现在播放的歌曲和收音机的名称一样吗?