Articles of android mediaplayer

Android MediaMetadataRetriever从大多数键返回空值

我想从我的媒体文件中获取信息(主要是mp3),我只从我想要的那些值中得到null。 我已经尝试了extractMetadata(key)所有键。 我跳过/遗失了什么吗? 代码基础: MediaMetadataRetriever f = new MediaMetadataRetriever(); f.setDataSource(item.getFilePath()); String title = f.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 我使用持续时间密钥(MediaMetadataRetriever.METADATA_KEY_DURATION)和mimetype密钥(MediaMetadataRetriever.METADATA_KEY_MIMETYPE)获取正确的值,这表示数据源/文件路径正在工作。 Poweramp(流行的媒体播放器)能够读取元数据值,例如标题/作者/composer php等,因为它在UI中显示这些额外的值。 或者Poweramp可能从其他来源或方法中获取这些值? 任何帮助表示赞赏。

如何保护Android上的媒体内容(video,音频)不被保存/重新分发?

常规应用程序开发人员有什么机会(我的意思是,你不是一个百万美元的内容制作公司或分销渠道提供商,而是一个普通的小型应用程序开发公司)来保护应用程序的video/音频内容不被保存/分散式。 我提到了“常规开发者”,因为我在Android核心代码中看到索尼在DRM包中添加了一些代码部分。 让我们假设我们没有那么强大的权力与谷歌交谈,将其包括在他们的核心代码中。 是否有任何真正安全的方法来保护Android上的video/音频(作为应用程序的一部分)。 假设(如果我错了,请纠正我): 设备可以由用户植根,需要注意这一点 检测设备是否已植根(在应用程序内)在Android上是不可能的,因为超级用户基本上可以伪造设备的任何状态。 我们无法修改任何硬件或用户的系统(意思是:我们不会将我们的应用程序产品与设备捆绑在一起,该应用程序应作为App Market上的“常规”应用程序提供下载) 媒体文件/流可以在设备本地,也可以从服务器远程传输,两者都可以 我已经对这个话题进行了相当多的研究,搜索了很多,在这里(希望)所有相关的问题都在这里,我和一个DRM提供商进行了交谈(作为小公司或自由开发者很难与之联系,或至少获得一些真实的相关信息,技术文档和细节)。 我将DRM视为一种方法,但“默默无闻”似乎并不是一种非常好的方法。 此外,我还没有为常规开发人员find任何信息或真正的解决方案/ API。 公钥加密是另一个想法,但在哪里真正安全地存储私钥? 此外,我假设在这种情况下,需要重写整个媒体框架和播放器,以便将安全video流传递给播放器。 还是我弄错了? 我希望得到该领域其他经验丰富的开发人员的一些意见,因为很难在任何地方find有关Android媒体内容保护的信息。 更新: 在我的问题的背景下,我发现了这个问题并且它的更新很有趣: 流式传输到Android MediaPlayer

无法在Android Web View中查看video

我的网页使用html5video标签覆盖了video文件。 我有一个嵌入式Web服务器(NanoHTTPD)运行,它从文件系统提供我的文件。 其他一切都有效,但是当我点击播放HTML5video时。 它会出现以下错误,并且不播放video 09-29 20:38:36.620: D/HTML5VideoInline(11532): HTML5VideoInline created 09-29 20:38:36.625: V/MediaPlayer(11532): setVideoSurfaceTexture 09-29 20:38:36.625: V/MediaPlayer-JNI(11532): reset 09-29 20:38:36.625: V/MediaPlayer(11532): reset 09-29 20:38:36.625: I/MediaPlayer(11532): path is null 09-29 20:38:36.640: D/MediaPlayer(11532): setDataSource IOException happend : 09-29 20:38:36.640: D/MediaPlayer(11532): java.io.FileNotFoundException: No content provider: http://10.207.114.115:8765/SLC/Book3_html/Book3/book/BO/demo.mp4 09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:713) 09-29 20:38:36.640: D/MediaPlayer(11532): at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:617) 09-29 20:38:36.640: D/MediaPlayer(11532): […]

Android中方向更改时如何连续播放音频?

我是Android的新手,我必须创建MediaPlayer来播放音频音乐。 开始时我的活动歌曲开始播放。 但是当我在我的模拟器屏幕上更改方向时, MediaPlayer会重新初始化,另一个音频开始播放。 我怎么能避免呢? 这是我的代码: public class Audio_Activity extends Activity { MediaPlayer mp = null; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if(isLaunched) { setContentView(R.layout.audio); } SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0); length = settings.getInt(“TheOffset”, 0); init(); prefs = PreferenceManager.getDefaultSharedPreferences(this); mp = MediaPlayer.create(getApplicationContext(), R.raw.subhanallah); playMusic(); mp.setOnCompletionListener(new OnCompletionListener() { @Override public void onCompletion(MediaPlayer arg0) { // TODO […]

Android:如何知道MediaPlayer是否暂停?

MediaPlayer.isPlaying()不允许知道MediaPlayer是停止还是暂停。 如何知道它是否暂停而未停止? 谢谢 !

Android MediaPlayer流媒体在网络更改时停止

我在Android上使用MediaPlayer传输音频。 当设备从Wi-Fi移动到蜂窝网络或反之亦然时,MediaPlayer停止播放。 通常,缓冲区中有几秒钟的音频,因此播放不会立即停止。 理想情况下,我想选择不间断播放的流,但我看不出怎么做。 我正在处理服务器上托管的mp3文件和实时广播流。

打盹模式和前台服务

检查我的应用程序在M预览设备上的行为,它的前景(带有活动通知)服务播放音乐似乎不受打盹模式的影响。 但阅读文档似乎只有AppStandby才能免除前台服务。 什么是真正的规则?

如何在Android中的不同视图中并排在一个布局中同时播放多个video文件

在Android中,我创建了一个并排有三个表面视图的布局,我想同时播放一个带有不同媒体播放器的video文件。 但是我遇到的一个问题是,三个人都不能同时播放该video。 其中一两个人停下了显示器。 如果我直接使用video视图而不是Media Player类,但问题仍然存在。 请任何人都可以提供帮助。 问题是什么? 它给错误表面创建失败原生错误。 我尝试了不同的组合,例如3个不同视图中的一个文件,三个不同视图中的三个文件,但问题尚未解决。 其他网站上的一些回复说它取决于内核版本。 如果它取决于内核版本,请你在android网站上给我任何android文档链接,它取决于内核版本。 或者可以玩,请给我代码的步骤。 这是错误日志 – 04-10 19:23:37.995: E/ANDROID_DRM_TEST(2573): Client::notify In 04-10 19:23:37.995: V/AudioPolicyManager(2573): startOutput() output 1, stream 3, session 131 04-10 19:23:37.995: V/AudioPolicyManager(2573): getDeviceForStrategy() from cache strategy 0, device 2 04-10 19:23:37.995: V/AudioPolicyManager(2573): getNewDevice() selected device 2 04-10 19:23:37.995: V/AudioPolicyManager(2573): setOutputDevice() output 1 device 2 delayMs […]

在旋转时更改MediaController位置

我正在尝试在方向更改时动态更改MediaController的锚点。 经过我的所有尝试后,这根本不能正常工作。 也许你可以指出我的错误。 简单来说: 肖像模式: weightSum = 1。 SurfaceView重量:0.4 MediaController和HorizontalScrollView权重:0.6 MediaController始终可见而不是隐藏 景观模式: SurfaceView重量:0.0(全屏) MediaControlls = View.Gone (我需要将其锚点更改为SurfaceView 。并popuponTouch。但是如何?) 代码: player.xml: 转换代码: @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (Global.getScreenOrientation(this) == Configuration.ORIENTATION_LANDSCAPE) { //hide action bar getSupportActionBar().hide(); if (myGallery != null) { //hide HorizontalScrollView myGallery.setVisibility(View.GONE); } //make surface fullscreen surfaceWrapper.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT, 0f)); controlsWrapper.setLayoutParams(new LinearLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, […]

访问媒体播放器缓存

一旦完全加载,我想将逐步流式传输的mp3文件移动到SD卡。 有没有办法实现这一目标。 我已经看到MediaPlayer完全下载整个文件,而渐进式流媒体,然后我们可以寻找文件的任何部分。 我想将完全流式文件移动到外部存储器,以便将来播放不会浪费数据和电池。