Articles of android mediaplayer

如何获取Android MediaPlayer中的当前音量/幅度?

我正在开发一个既可以录制音频文件的应用程序,也可以选择在录制完文件后播放该文件。 UI具有EQ组件,该组件相对于记录的当前幅度animation化。 我通过MediaRecorder.getMaxAmplitude()方法运行animation,但无法find任何使用MediaPlayer执行此操作的方法。 我知道它必须是可能的,因为默认情况下有音乐可视化动态壁纸执行此function,但我无法看到它在通过AOSP梳理时提取信息。 有人知道如何使这项工作?

如何在没有新意图的情况下从通知回到活动

从Android开发,我通过示例代码实现一个简单的通知,但在我的应用程序中,我不想新的意图并再次创建活动,我只想回到我的上一个活动(它是一个媒体播放器UI)。 如果我使用示例代码,它将创建一个新的活动 Intent resultIntent = new Intent(this, ResultActivity.class); 我评论有关新意图的相关代码并收到通知,但不知道如何回到我上次的活动…… 从长按主页键回到我的应用程序并触摸我的应用程序是好的。 我想要的就像这种行为。 bleow是来自Android Development的示例代码,我评论新的意图部分。 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.notification_icon) .setContentTitle(“My notification”) .setContentText(“Hello World!”); /*Intent resultIntent = new Intent(this, ResultActivity.class); TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); stackBuilder.addParentStack(ResultActivity.class); stackBuilder.addNextIntent(resultIntent); PendingIntent resultPendingIntent = stackBuilder.getPendingIntent( 0, PendingIntent.FLAG_UPDATE_CURRENT ); mBuilder.setContentIntent(resultPendingIntent);*/ NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); mNotificationManager.notify(mId, mBuilder.build()); [UPDATE] 我认为我需要为活动的意图和适当性设置标志。 因此,对于我想要回到我设定的活动 android:launchMode=”singleInstance” 因为,我不想从意图开始新的活动,我只想要我的最后一个活动,所以我补充说 […]

Android MediaPlayer在自定义音频流应用程序(适用于Android 2.1)中运行良好,但在较高版本中无效

编辑: Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL但不能与另一个一起使用 我需要播放来自外部URL(shoutcast流)的音频文件。 目前,音频文件以增量方式下载,并在我们在手机本地临时存储中获得足够的音频时立即播放。 我正在使用StreamingMediaPlayer类 。 检查这段代码: private MediaPlayer createMediaPlayer(File mediaFile) throws IOException { MediaPlayer mPlayer = new MediaPlayer(); //example of mediaFile =/data/data/package/cache/playingMedia0.dat FileInputStream fis = new FileInputStream(mediaFile); mPlayer.setDataSource(fis.getFD()); mPlayer.prepare(); return mPlayer; } 当前状态: 1-从Android 1.6到2.1可以正常工作,但在Android 2.2等较高版本中则不行。 2-“mPlayer.setDataSource(fis.getFD())”是抛出错误的行。 3-错误是“无法创建媒体播放器” 尝试了其他方案: 我尝试了下面的替代解决方案但到目前为止没有任 Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL但不能与另一个一起使用 我在找什么? 我的目标是拥有可以在Android 2.1及更高版本上运行的代码。 这个问题也在这里讨论: 1- 不一致2.2媒体播放器行为 2.2用于流式传输shoutcast流中断的android代码 […]

Android MediaPlayer警告:应该已经设置了字幕控制器

我的Nexus 4升级到4.4,现在每当MediaPlayer发出声音时,我都会收到警告: Should have subtitle controller already set 而且当调用mp.release()我现在得到警告 mediaplayer went away with unhandled events 带有4.3的Nexus 7上的相同应用程序不显示这些警告。

MEDIA_ERROR_SERVER_DIED是什么意思?

在Android文档中 ,有一个常量定义的MEDIA_ERROR_SERVER_DIED ,描述如下: 媒体服务器死了。 在这种情况下,应用程序必须释放MediaPlayer对象并实例化一个新对象。 这看起来很模糊。 媒体服务器死了是什么意思? 为什么会死? 之后立即尝试再玩一次是否合适呢?

如何在Android中无间隙地循环声音?

我想在android中无间隙地循环声音。 我尝试使用代码mediaplayer.setLooping(true)来循环声音,但是当第一个声音结束并且下一个声音开始时总会有一点停顿。

在recyclerview中使用textureview播放video

我正在尝试使用像Vine或Instagram应用程序这样的video实现列表。 当列表项显示或完全可见时,他们播放video播放的位置,并且当列表项被隐藏时video暂停。 我正在使用带有媒体播放器的textureview从url播放video,并将其作为listler项目添加到recyclelerview中。 以下是我的代码。 VideosAdapter类: public class VideosAdapter extends RecyclerView.Adapter { Context context; private ArrayList urls; public static class ViewHolder extends RecyclerView.ViewHolder { public LinearLayout layout; public TextView textView; public ViewHolder(View v) { super(v); layout = (LinearLayout) v.findViewById(R.id.linearLayout); textView = (TextView) v.findViewById(R.id.textView); } } public VideosAdapter(Context context, ArrayList urls) { this.context = context; this.urls = […]

Android WebView播放HTML5 / h.264 / mp4video,如何获取MediaPlayer

我有一个Activity ,它是一个WebView 。 我里面有一个WebChromeClient 。 在其中,有几个回调用于返回处理video位的MediaPlayer 。 例如: @Override public void onPrepared(MediaPlayer mp) { Log.i(TAG, ” ————-> onPrepared”); } 当我使用HTML 标签(通过注入)将MP4流加载到WebView时,这些无法触发。 当我finish()活动时,logcat会报告: 09-13 23:55:24.590: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message. 09-13 23:55:24.680: E/MediaPlayer(7949): mOnBufferingUpdateListener is null. Failed to send MEDIA_BUFFERING_UPDATE message. 09-13 23:55:24.680: E/MediaPlayer(7949): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message. […]

rtspvideo性能作为浏览器触发的意图与我的应用程序触发的意图

嗨,我正在创建一个应用程序,它将播放livestream.com的rtsp直播频道。 我在我的应用程序中使用intent启动播放器如下: iPlayer = new Intent(Intent.ACTION_VIEW); //iPlayer.setType(“video/*”); iPlayer.setData(Uri.parse(videoUrl)); startActivity(iPlayer); 通过我的应用程序启动媒体播放器时,video性能非常差。 它会停止每隔几秒钟缓冲一次,播放几秒钟并暂停再次缓冲。 另一方面,如果我在Android浏览器中打开url(例如http://m.livestream.com/abcalbania ),它在该页面上有一个video标签并触发video播放器。 这一次,video运行非常顺利。 知道为什么会这样吗? 以及如何解决这个问题? 我不想将浏览器URL作为意图启动。 这是在Android 2.3.4的Atmel cortex A9芯片组上完成的

MediaPlayer.setDataSource(String)不使用本地文件

如果我使用静态方法MediaPlayer.create(context,id),我可以播放本地mp3,但是如果我使用非静态方法MediaPlayer.setDataSource(String)则它不起作用。 发生的事情是我在调用MediaPlayer.prepare()时遇到同步exception: prepare exceptionjava.io.IOException: Prepare failed.: status=0x1 这是我的代码(省略日志记录): String filename = “android.resource://” + this.getPackageName() + “/raw/test0”; mp = new MediaPlayer(); try { mp.setDataSource(filename); } catch (Exception e) {} try { mp.prepare(); } catch (Exception e) {} mp.start(); 请注意,我没有收到有关未find文件或任何内容的错误。 该文件的全名是test0.mp3,我将它放在Eclipse的/ res / raw /目录中。 我假设我正在设置错误的路径,但我在网上find的所有示例都使用setDescriptor版本的setDataPath而不是String版本的setDataPath。 编辑:如果我使用方法MediaPlayer.setDataSource(FileDescriptor)并将文件放在Eclipse中的/ assets /目录中,我也可以播放本地mp3。 编辑#2:我接受了这是不可能的答案,但后来意识到我正在使用的库(openFrameworks)实际上使用String方法来加载文件。 看这里: https://github.com/openframeworks/openFrameworks/blob/master/addons/ofxAndroid/ofAndroidLib/src/cc/openframeworks/OFAndroidSoundPlayer.java