编辑 - 找到一个简单的5-10线解决方案!看下面我自己的答案!好极了!!!!!!!!!
我搜索了5个小时,数十个SO帖子,没有答案,这似乎是最简单明显的怪异事!
编辑顺便说一句,这不是一个音乐播放器的应用程序,只是一个应用程序来查看图片和文本,打开多个活动,如菜单和关于,查看差异类型的图片等.我只想播放一些简单的背景音乐,同时通过图片看和文字,为什么这么难?
另一个编辑 - 似乎主要的问题是:"为什么按下主页按钮不打开onPause或onStop ???" - 我可以知道何时停止媒体播放器?我在市场上下载的游戏怎么做到这个???
家庭活动开始
然后
媒体播放器开始:
player = MediaPlayer.create(this, R.raw.idil);
player.setLooping(true);
player.setVolume(100,100);
player.start();
Run Code Online (Sandbox Code Playgroud)
玩家在onCreate之外宣布
MediaPlayer player;
Run Code Online (Sandbox Code Playgroud)
当其他活动被打开时,背景音乐继续不间断,这很好,这就是我想要的.
现在,当我完成了我非常简单的应用程序(只显示差异活动中的一些图片和文本)时,我要么多次单击BACK以进入主页/原始活动,然后又一次"退出",或者,我只是按回家"退出",因为我已经完成了这个应用程序,我不再需要听到那个音乐了.
选项1
通话player.stop();中的onPause覆盖,这是不是我想要的,因为当我离开家的活动像"菜单"和"约",我也没有什么用暂停和打开新的活动的时候,因为我做恢复等活动的背景音乐停止不希望漂亮的背景音乐"跳过"或被打断.
方案2
@Override
protected void onPause() {
super.onPause();
if (this.isFinishing()){
player.stop();
}
}
Run Code Online (Sandbox Code Playgroud)
这是更好的,因为背景音乐不会在活动之间停止,当我从我的家庭活动按BACK时,音乐停止,我可以继续享受安卓的安卓手机,但问题是,当按下HOME时按钮"退出"我的应用程序,那讨厌的背景音乐继续播放.
奇怪
@Override
protected void onStop() {
super.onStop();
if (this.isFinishing()){
player.stop();
}
}
Run Code Online (Sandbox Code Playgroud)
与onPause相同(我确实理解实际的差异)
编辑 - 这似乎没关系,如果player.stop(); 高于或低于super.onStop(); 但它影响我无法看到的东西,无论哪种方式,仍然没有解决方案:(
OOOOO
OOOOO
编辑 - 另一个选项 - 但不工作
public void onUserLeaveHint() { …Run Code Online (Sandbox Code Playgroud) 我跟着这个播放流媒体广播在Android中
在这里它的工作精细但播放器加载位慢点击后我需要等待30秒以上的时间
但是我在控制台中收到此错误
MediaPlayer: setDataSource IOException happend :
java.io.FileNotFoundException: No content provider: http://www.example.com:8000/live.ogg
at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1074)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:927)
at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:854)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1087)
at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1061)
at org.oucho.radio.Player.playLaunch(Player.java:237)
at org.oucho.radio.Playlist.onPostExecute(Playlist.java:98)
at org.oucho.radio.Playlist.onPostExecute(Playlist.java:35)
at android.os.AsyncTask.finish(AsyncTask.java:632)
at android.os.AsyncTask.access$600(AsyncTask.java:177)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Run Code Online (Sandbox Code Playgroud)
在链接中您可以看到所有文件,如播放器等
由于此错误,我的流很慢.请任何人帮我这个类型
这里的错误不是.ogg我试过的文件.mp3和Just/live
http://www.example.com:8000/beet.ogg
http://www.example.com:8000/mouthorgan.mp3
http://www.example.com:8000/live
Run Code Online (Sandbox Code Playgroud)
音频正在播放但是在这个错误之后它需要大约30秒的时间有时需要花费太长时间....当我播放它显示此错误然后它连接到服务器..并且播放
请帮我解决这个问题
为什么MediaPlayer.seekTo(int msec)这么不准确?
它有时提前30秒(使用可变和恒定比特率的mp3)!寻求音频固有问题还是这种方法被打破了?是缓冲还是什么?
我也注意到总运行时间getDuration()可能是错误的(这不是一个大问题)并且我已经测试了getCurrentPosition()足够准确(因为在每n秒播放时,它增加了n000).我在Android 2.2上.
最后,是否有人知道哪些格式实际上是一致的(最好不是wav,大概是这样)?
编辑:
我主要听播客.即使在转换/重新编码为CBR之后,smodcast和Thinking Allowed也会出现多次问题.文件未损坏.
QuickMediaConverter(Windows)似乎工作正常,但Sound Converter(Ubuntu)生成了一些狡猾的文件.我会尝试坚持前者......
更新:QuickMediaConverter工作得很好,但不知道为什么.没问题了!
我是Android开发的新手,我有一个问题/疑问.
我正在玩MediaPlayer类来重现一些声音/音乐.我正在玩原始资源(res/raw),看起来很容易.
要播放原始资源,MediaPlayer必须像这样初始化:
MediaPlayer mp = MediaPlayer.create(appContext, R.raw.song);
mp.start();
直到这里没有问题.声音播放,一切正常.当我想为我的应用程序添加更多选项时,会出现我的问题.特别是当我添加"停止"按钮/选项时.
基本上,我想要做的是......当我按下"停止"时,音乐停止.当我按"开始"时,歌曲/声音重新开始.(非常基本!)
要停止媒体播放器,您只需要拨打电话stop().但要再次播放声音,媒体播放器必须重新制作并准备好.
mp.reset();
mp.setDataSource(params);
mp.prepare();
问题是该方法setDataSource()仅接受文件路径,内容提供者URI,流媒体URL路径或文件描述符作为参数.
因此,由于此方法不接受资源标识符,因此我不知道如何设置数据源以便调用prepare().另外,我不明白为什么你不能使用Resouce标识符来设置数据源,但是在初始化MediaPlayer时你可以使用资源标识符.
我想我错过了一些东西.我想知道我是否在混合概念,并且stop()不必在"停止"按钮中调用该方法.有帮助吗?
提前致谢!!!
我在我的Android应用程序的res/raw文件夹中有一个小(200kb)的mp3.我试图在Eclipse的模拟器中运行它.它被认为是R文件中的资源,但是当我尝试准备/启动时,我的活动崩溃了!还有其他我需要改变的东西,也许是在清单中吗?
MediaPlayer mPlayer = MediaPlayer.create(FakeCallScreen.this, R.raw.mysoundfile);
try {
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
// handle this later
}
我是Android编程的新手并且发现自己陷入困境我一直在研究各种方法从手机到手机直播视频直播,似乎主要是功能性的,当然除了最重要的部分:播放流.它似乎是从一部手机发送流,但第二部手机无法播放流.
这是播放方的代码
public class VideoPlayback extends Activity implements Callback {
MediaPlayer mp;
private SurfaceView mPreview;
private SurfaceHolder holder;
private TextView mTextview;
public static final int SERVERPORT = 6775;
public static String SERVERIP="192.168.1.126";
Socket clientSocket;
private Handler handler = new Handler();
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mPreview = (SurfaceView) findViewById(R.id.surfaceView1);
mTextview = (TextView) findViewById(R.id.textView1);
holder = mPreview.getHolder();
holder.addCallback(this);
holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
mTextview.setText("Attempting to connect");
mp = new MediaPlayer();
Thread t = …Run Code Online (Sandbox Code Playgroud) android file-descriptor video-streaming media-player live-streaming
我正在开发一个视频应用程序.完成第一个视频播放后,在"OnCopletion"中我试图开始一个新的视频.但它只是停止(不是崩溃)而什么也不做.在日志中:
10-19 09:44:49.056: ERROR/MediaPlayer(4654): setDataSource called in state 128
10-19 09:44:49.056: WARN/System.err(4654): java.lang.IllegalStateException
10-19 09:44:49.056: WARN/System.err(4654): at android.media.MediaPlayer.setDataSource(Native Method)
10-19 09:44:49.056: WARN/System.err(4654): at ru.osiris.BusAdvertising.BusAdvertisingActivity.onCompletion(BusAdvertisingActivity.java:1255)
10-19 09:44:49.056: WARN/System.err(4654): at android.media.MediaPlayer$EventHandler.handleMessage(MediaPlayer.java:1304)
10-19 09:44:49.056: WARN/System.err(4654): at android.os.Handler.dispatchMessage(Handler.java:99)
10-19 09:44:49.056: WARN/System.err(4654): at android.os.Looper.loop(Looper.java:123)
10-19 09:44:49.056: WARN/System.err(4654): at android.app.ActivityThread.main(ActivityThread.java:4627)
10-19 09:44:49.056: WARN/System.err(4654): at java.lang.reflect.Method.invokeNative(Native Method)
10-19 09:44:49.056: WARN/System.err(4654): at java.lang.reflect.Method.invoke(Method.java:521)
10-19 09:44:49.056: WARN/System.err(4654): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-19 09:44:49.056: WARN/System.err(4654): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-19 09:44:49.056: WARN/System.err(4654): at dalvik.system.NativeStart.main(Native Method)
Run Code Online (Sandbox Code Playgroud)
这是什么意思?我该如何解决?有我的代码:
public class BusAdvertisingActivity extends Activity implements LocationListener, OnBufferingUpdateListener, …Run Code Online (Sandbox Code Playgroud) 当我在Windows 7中运行Windows应用程序(MFC)时,我收到以下警告.
'XXX.exe': Loaded 'C:\2010\Debug\bin\plugins\control\libhotkeys_plugin.dll', Binary was not built with debug information.
请帮助我.谢谢
我看到的错误是调用reset()和release()永远不会返回,从而使我的应用程序处于无限停止状态.如果我在reset()或release()之前调用stop()并不总是可以重现挂起.
任何与MediaPlayer锁定有任何类似问题的人?有小费吗?我正在研究一个多线程应用程序.
查看正在保留的线程时,DDMS会报告以下内容:
CLASS | 方法| 文件| LINE | NATIVE
android.media.MediaPlayer _release MediaPlayer.java -2 true
android.media.MediaPlayer release MediaPlayer.java 1049 false
我正在尝试使用媒体播放器在活动中播放网址:
mediaPlayer = MediaPlayer.create(getApplicationContext(),
Uri.parse("http://www.pocketjourney.com/downloads/pj/video/famous.3gp"),
holder);
Run Code Online (Sandbox Code Playgroud)
它工作正常.我使用相同的代码将其设置为in @onSurfaceCreated中的动态壁纸WallpaperService,它会给我以下错误日志
D/MediaPlayer( 4128): create failed: D/MediaPlayer( 4128):
java.io.IOException: setDataSource failed.: status=0x80000000
D/MediaPlayer( 4128): at
android.media.MediaPlayer._setDataSource(Native Method) D/MediaPlayer(
4128): at
android.media.MediaPlayer.setDataSource(MediaPlayer.java:844)D/MediaPlayer( 4128): at
android.media.MediaPlayer.setDataSource(MediaPlayer.java:806)......
Run Code Online (Sandbox Code Playgroud)
如果我使用本地视频uri设置动态壁纸..工作正常.
这里有什么想法/建议吗?
media-player ×10
android ×9
background ×1
mfc ×1
mp3 ×1
radio ×1
stream ×1
visual-c++ ×1
windows ×1