我正在寻找一种方法将全球媒体动作(播放/暂停,下一个,上一个)发送到手机,就像它可以通过蓝牙配对的无线电/扬声器一样.
我找到了MediaController类(http://developer.android.com/reference/android/widget/MediaController.html),但似乎更多的是实现这些操作的接收器,我正在寻找发送者.
但是,我无法在android文档的任何地方找到任何引用...
有人已经偶然发现了这个吗?
我是Android新手.我使用的是android os 2.2.我正在尝试从网址播放流媒体音频和视频.我不知道该怎么做.在googling 3天后,我开始知道我必须使用mediaPlayer和MediaController类.
我曾在互联网上使用不同的不同组合代码,但没有成功.
任何人都可以指导我如何处理流式音频/视频播放.如果我们使用MediaPlayer或Controller类,UI会怎样?在布局的xml文件中有没有相关的东西.
如果没有,那么请告诉我可能是什么代码.
请帮我.
我有一个简单的活动,通过VideoView播放视频
public class AVideo extends Activity {
private VideoView mVideoView;
private MediaController mc;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_video);
Bundle extras = getIntent().getExtras();
Uri path = Uri.parse(extras.getString("videoURI"));
mVideoView = (VideoView) findViewById(R.id.video);
mVideoView.setVideoURI(path);
mc = new MediaController(this);
mVideoView.setMediaController(mc);
}
@Override
protected void onResume() {
super.onResume();
mVideoView.start();
mc.show();
}
}
Run Code Online (Sandbox Code Playgroud)
在某些情况下,当用户按下按钮时,在此活动中,在视频开始播放之前,他有ANR.这是我的踪迹:
DALVIK THREADS:
"main" prio=5 tid=3 NATIVE
| group="main" sCount=1 dsCount=0 s=N obj=0x4001b268 self=0xbd00
| sysTid=423 nice=0 sched=0/0 cgrp=default handle=-1344001384
at android.media.MediaPlayer._reset(Native Method)
at android.media.MediaPlayer.reset(MediaPlayer.java:1028)
at android.widget.VideoView.release(VideoView.java:476)
at android.widget.VideoView.access$2100(VideoView.java:49)
at …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序,我正在使用Android SDK MediaPlayer在我的应用程序中播放一些视频.当我在我的应用程序中播放视频时,大约五分之一,视频播放没有视频.这不是一个简单的编码错误,因为大多数时候视频播放都很完美.
我认为我的代码中的竞争条件导致了这个错误.但是,我添加了许多调试语句,当视频无法播放时,所有内容似乎都已正确设置.
我已经扫描了网络,并试图寻找解决方案,但没有一个是足够的(见下文).
有没有人遇到过这类问题?如果是这样,你做了什么?
类似问题:
更多细节:
更新:
我一直在调试这个并查看logcat.我发现当视频工作时,logcat中出现如下内容:
09-28 00:09:03.651: VERBOSE/PVPlayer(10875): setVideoSurface(0x65638)
Run Code Online (Sandbox Code Playgroud)
但是当视频没有播放时,它看起来像是一个空条目:
09-28 00:03:35.284: VERBOSE/PVPlayer(10875): setVideoSurface(0x0)
Run Code Online (Sandbox Code Playgroud)
更新2:
当视频无法播放时,函数MediaPlayer.OnInfoListener带参数 what==MEDIA_ERROR_UNKNOWN(0x1)和extra==35.我查看了Android代码库,试图确定未知错误35的含义.我遇到了文件pv_player_interface.h,它表明错误代码35对应于一个名为a的东西PVMFInfoTrackDisable.我用谷歌搜索了那个把我带到一个叫做文件的文章 pvmf_return_codes.pdf.该文件给了我以下难以理解的解释:
4.34.PVMFInfoTrackDisable
禁用特定轨道的通知.这个是基于每个轨道.对于未压缩的音频/视频格式,在选择内容中可用的轨道的过程中,如果解码器不支持轨道,则发送PVMFInfoTrackDisable事件.如有必要,该活动将在每个赛道发送一次.
我觉得我已经走了很长的路,但我没有找到答案......仍然在调查.
我有一个音频流应用程序,它运行本地代理服务器.本地代理服务器与互联网流媒体源建立http连接,在本地获取和缓冲流数据.然后,在应用程序内部,我使用MediaPlayer连接到本地代理服务器,使用该方法
mediaPlayer.setDataSource(...); // the url of the local proxy server
Run Code Online (Sandbox Code Playgroud)
一切都很好(有很多Android设备和不同的操作系统版本 - 1.5 ... 4.0),直到Nexus 7发布.
在Nexus 7中,媒体播放器拒绝从本地代理服务器播放源.
当我查看日志时,似乎MediaPlayer在内部使用范围请求.我的本地代理服务器无法处理.它返回HTTP/1.0 200 OK和数据.但是,媒体播放器并不喜欢这样并抛出异常:
Caused by: libcore.io.ErrnoException
?:??: W/?(?): [ 07-18 00:08:35.333 4962: 5149 E/radiobee ]
?:??: W/?(?): : sendto failed: ECONNRESET (Connection reset by peer)
?:??: W/?(?): at libcore.io.Posix.sendtoBytes(Native Method)
?:??: W/?(?): at libcore.io.Posix.sendto(Posix.java:146)
?:??: W/?(?): at libcore.io.BlockGuardOs.sendto(BlockGuardOs.java:
?:??: W/?(?): at libcore.io.IoBridge.sendto(IoBridge.java:473)
We requested a content range, but server didn't support that. (responded with 200)
Run Code Online (Sandbox Code Playgroud)
根据http规范,如果服务器以HTTP/1.0而不是1.1响应,则客户端不得发出范围请求(1.0不支持该规范),
此外,如果服务器不支持范围请求,它应该没问题,如果它以200 OK响应(这就是我正在做的事情),但是Nexus 7上的MediaPlayer实现并不喜欢.
我看了一下这个帖子: HTTP:当Range不受支持时,我应该如何响应"Range:bytes ="? …
我正在努力获得一个直播的无线电流来处理android.我正在使用MediaPlayer该类,只是设置URL并播放它.它在大多数情况下效果很好,但在5-30分钟后它不可避免地会死亡.在2.1手机(更具体地说是英雄)上我得到了这个日志输出
W/MediaPlayer( 7919): info/warning (1, 26)
I/MediaPlayer( 7919): Info (1,26)
I/MediaStreamService( 7919): mPlayer info code:1 extra:26
E/MediaPlayer( 7919): error (1, -11)
E/MediaPlayer( 7919): Error (1,-11)
Run Code Online (Sandbox Code Playgroud)
MediaStreamService包含MediaPlayer输出的我的服务来自哪里OnInfoListener
在2.2手机上我没有得到OnInfoListener回调,流就死了.但我确实在logcat中看到了这一点
E/HTTPStream( 1020): recv failed, errno = 11 (Try again)
E/HTTPDataSource( 1020): retrying connection failed
Run Code Online (Sandbox Code Playgroud)
似乎在我的1.6手机上完美无瑕地工作,尽管垃圾邮件一直是垃圾邮件
E/PlayerDriver( 82): Invalid percentage value <big growing number>
Run Code Online (Sandbox Code Playgroud)
我的问题是,错误代码(1,26)是什么意思?是什么导致我的mediaPlayer崩溃?2.1问题是否与2.2问题有关?谢谢,内森
编辑:我正在寻找源代码OnInfoListener ,发现public static final int MEDIA_INFO_UNKNOWN = 1;
我不确定它究竟是什么意思,也无法找到这些额外内容的保存位置.任何关于媒体信息未知的含义的见解?或者这26代表什么将非常感激.
我正在使用MediaPlayer和SurfaceView播放本地视频文件.SurfaceView是活动中唯一的控件,而我的视频文件是QVGA或其他.问题是视频正在变得拉长,我如何以原始大小播放视频,例如qvga,其余区域为黑色.
从迭代开始,
当我在XML中强制设置Surfaceview的layout_height/width时,视频显示正常.
surface_holder.setFixedSize(w,h)没有效果,也没有mp.setdisplay().
请指导一下.
UPDATE
XML flie
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/home_container"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<SurfaceView
android:id="@+id/surface"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip" />
</framelayout>
Run Code Online (Sandbox Code Playgroud)
MediaPlayer用法如下所示
提前致谢.
Android的文档MediaPlayer显示该reset()调用没有无效状态:http://developer.android.com/reference/android/media/MediaPlayer.html#Valid_and_Invalid_States(无效状态列为{}或"无" ").
但是,我看到IllegalStateException在调用时抛出reset():
java.lang.IllegalStateException
at android.media.MediaPlayer._reset(Native Method)
at android.media.MediaPlayer.reset(MediaPlayer.java:1061)
at com.example.android.player.AsyncPlayer$AsyncHandler.handleMessage(AsyncPlayer.java:654)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.os.HandlerThread.run(HandlerThread.java:60)
Run Code Online (Sandbox Code Playgroud)
文档不正确吗?
我正在使用Android MediaPlayer来播放同时从互联网上下载的MP3文件DownloadManager.我知道MediaPlayer直接流的功能,但我不想使用它:
通过下载和同时从文件流式传输获得的明显优势就是这样,文件被存储并且之后可在本地获得.
MediaPlayer即使没有完全下载也会开始播放文件.(顺便说一下,我的问题不在于我无法MediaPlayer上场.)MediaPlayer它开始播放时到达下载状态的位置时,它会停止并调用onCompletion.(澄清:假设我开始玩时,我们假设该文件下载了12%.当玩家以12%的比例到达该位置时,它会停止.)OnBufferingUpdateListener.onBufferingUpdate(...)当MP3文件通过附加内容添加时,不会调用DownloadManager.所以问题是:如何同时将音频文件下载到文件系统并播放?(Android 4+就足够了,如果这有所不同.)
我是Android新手,所以我遇到了问题.在Android中,我想在我的音乐播放器启动后立即播放背景音乐,并且即使活动从一个变为另一个,它也会继续播放.我试过这段代码:
MediaPlayer music = MediaPlayer.create(MainActivity.this, R.drawable.bgscore);
music.start();
Run Code Online (Sandbox Code Playgroud)
但是,当用户关闭应用程序时声音应该停止,但事实并非如此.我怎样才能做到这一点?