我試圖獲取mp3文件並將其保存在手機內存中,而不是SD卡,然後立即使用媒體播放器播放。這個代碼在我以前用它在SD卡上做同樣的事情時效果很好,所以看起來在保存和讀取mp3的位置可能會有一些錯誤。使用Android媒體播放器從手機內存中寫入和播放媒體
這裏是我的代碼:
try {
MediaPlayer player = new MediaPlayer();
URI uri = null;
try {
uri = new URI(
"http://translate.google.com/translate_tts?tl="
+ oLanguage + "&q=" + text);
} catch (URISyntaxException e) {
e.printStackTrace();
}
String FileName = "Audio2.mp3";
URL u = new URL(uri.toASCIIString());
HttpURLConnection c = (HttpURLConnection) u.openConnection();
c.setRequestMethod("GET");
c.setDoOutput(true);
c.connect();
// FileOutputStream f = new FileOutputStream(new File(
// Environment.getExternalStorageDirectory()
// + "/download/" + FileName));
FileOutputStream f = openFileOutput(FileName, MODE_PRIVATE);
InputStream in = c.getInputStream();
byte[] buffer = new byte[1024];
int len1 = 0;
while ((len1 = in.read(buffer)) > 0) {
f.write(buffer, 0, len1);
}
f.close();
// player.setDataSource(Environment.getExternalStorageDirectory()
// + "/download/" + FileName);
player.setDataSource("/data/data/com.comm/files/" + FileName);
player.prepare();
player.start()
的logcat:
07-30 12:23:47.319: W/MediaPlayer(22426): info/warning (1, 26)
07-30 12:23:47.319: E/MediaPlayer(22426): error (1, -4)
07-30 12:23:47.319: W/System.err(22426): java.io.IOException: Prepare failed.: status=0x1
07-30 12:23:47.329: W/System.err(22426): at android.media.MediaPlayer.prepare(Native Method)
07-30 12:23:47.329: W/System.err(22426): at com.comm.Connect.Text(Connect.java:396)
07-30 12:23:47.329: W/System.err(22426): at com.comm.Connect$7.onClick(Connect.java:233)
07-30 12:23:47.329: W/System.err(22426): at android.view.View.performClick(View.java:2485)
07-30 12:23:47.329: W/System.err(22426): at android.view.View$PerformClick.run(View.java:9080)
07-30 12:23:47.329: W/System.err(22426): at android.os.Handler.handleCallback(Handler.java:587)
07-30 12:23:47.329: W/System.err(22426): at android.os.Handler.dispatchMessage(Handler.java:92)
07-30 12:23:47.329: W/System.err(22426): at android.os.Looper.loop(Looper.java:130)
07-30 12:23:47.329: W/System.err(22426): at android.app.ActivityThread.main(ActivityThread.java:3687)
07-30 12:23:47.329: W/System.err(22426): at java.lang.reflect.Method.invokeNative(Native Method)
07-30 12:23:47.329: W/System.err(22426): at java.lang.reflect.Method.invoke(Method.java:507)
07-30 12:23:47.329: W/System.err(22426): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
07-30 12:23:47.329: W/System.err(22426): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
07-30 12:23:47.329: W/System.err(22426): at dalvik.system.NativeStart.main(Native Method)
最後,我需要指定任何權限,讓我保存到手機內存?
我已經有權限。我更新了我的問題以顯示logcat的輸出 – Amanni 2012-07-30 11:36:14