首页 > 解决方案 > 如何使用 php 文件连接到 Android 上的 MediaPlayer

问题描述

上次我开始在 Android 应用程序中使用 MediaPlayer。我想使用 php 将文件连接到服务器并播放 mp3 文件。当我尝试连接到 php 文件时,出现错误:

W/System.err:     at android.media.MediaPlayer._prepare(Native Method)
at android.media.MediaPlayer.prepare(MediaPlayer.java:1458)
at com.example.myApp.main_page.main_page.onCreate(main_page.java:41)
at android.app.Activity.performCreate(Activity.java:7963)
at android.app.Activity.performCreate(Activity.java:7952)
W/System.err:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1307)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3629)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3806)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2267)
at android.os.Handler.dispatchMessage(Handler.java:107)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8167)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100) 

我的安卓活动代码:

MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
String ip = "http://myIp:80/rec.php";
try {
    mediaPlayer.setDataSource(ip);
    mediaPlayer.prepare();
} catch (IOException e) {
    e.printStackTrace();
}
mediaPlayer.start();

我的PHP代码:

<?php
$file = 'directory/file.mp3';
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.android.package-archive');
header('Content-Disposition: attachment; filename=file.mp3');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
echo readfile($file)
?>

当我使用浏览器下载文件连接到 php 文件时,文件开始。

标签: phpandroidhttp

解决方案


你应该试试ExoPlayer

ExoPlayer 问题跟踪器中有讨论


推荐阅读