Androidメディアプレーヤーのオンライン音楽は、初めてキャッシュ側でサイド再生され、後でローカル音楽を直接再生するためのものです。リソースはmp3で、現在は2つのスレッドで、1つは1つのダウンロードを再生しています。主流のプレーヤーは、実装方法、メディアプレーヤー独自のPCM形式のキャッシュデータを取得して、コードをmp3形式に変換する方法を教えてください。またはメディアプレーヤーをカスタマイズしますか?ちなみに私の英語はとても困惑したmediaPlayerです。
mMediaPlayer.reset();
File file = new File(Environment.getExternalStorageDirectory()+ File.separator + "music",
playMusicDataBean.music_id + ".mp3");
if (file.exists()) {
mMediaPlayer.setDataSource(file.getAbsolutePath());
} else {
mMediaPlayer.setDataSource(playMusicDataBean.url);
new Thread() {
@Override
public void run() {
try {
URL url = new URL(playMusicDataBean.url);
URLConnection conn = url.openConnection();
InputStream in = conn.getInputStream();
if (in == null)
throw new RuntimeException("stream is null");
// File file =
// File.createTempFile("player_mp3_cache",
// ".mp3",
// MainActivity.this.getCacheDir());
File file = new File(
Environment.getExternalStorageDirectory()
+ File.separator + "nyx"
+ File.separator + "music",
playMusicDataBean.music_id + ".mp3");
if (!file.exists())
file.createNewFile();
// if(file.exists())
// file.delete();
m_strTempFilePath = file.getAbsolutePath();
System.out.println(m_strTempFilePath);
FileOutputStream fos = new FileOutputStream(file);
byte buffer[] = new byte[128];
do {
int nNumRead = in.read(buffer);
if (nNumRead <= 0)
break;
fos.write(buffer);
} while (true);
// m_player.setDataSource(m_strTempFilePath);
in.close();
fos.close();
// playMusicDataBean.isLoaded=true;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}.start();
} mMediaPlayer.prepareAsync();