1

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();
4

0 に答える 0