我使用套接字作为MediaPlayer的代理,因此我可以在将它写入套接字之前下载和解密mp3audio。 这与NPR新闻应用程序中显示的例子类似,但是我将其用于所有Android版本2.1 – 4 atm。 NPR StreamProxy代码 – http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/StreamProxy.java 我的问题是2.1 – 2.3的回放速度很快,但在Android 4.0 ICS中,MediaPlayer会在触发onPrepared侦听器之前缓冲太多的数据。 在onPrepared()之前写入Socket OutputStream的示例数据量: 在SGS2 2.3.4 – onPrepared()〜133920字节之后 在Nexus S 4.0.4 – onPrepared()〜961930字节之后 这也发生在Galaxy Nexus上。 奇怪的是,4.0仿真器不会像4.0设备那样缓冲数据。 任何人在ICS上遇到与MediaPlayer类似的问题? 编辑 这是代理如何写入套接字。 在这个例子中,它是从一个文件加载的CipherInputStream,但是从HttpResponse加载时也是一样的。 final Socket client = (setup above) // encrypted file input stream final CipherInputStream inputStream = getInputStream(file); // setup the socket output stream final […]
我试图访问用户设备上的媒体文件(音乐)来播放它们; 一个简单的“你好世界” – 音乐播放器的应用程序。 我跟着一些教程,他们基本上给出了相同的代码。 但它不会工作; 它不断崩溃,并告诉我: error….. Caused by: java.lang.SecurityException: Permission Denial: reading com.android.providers.media.MediaProvider uri content://media/external/audio/media from pid=27696, uid=10059 requires android.permission.READ_EXTERNAL_STORAGE, or grantUriPermission() …. 现在,这是我的清单文件: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="slimsimapps.troff" > <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" […]