将blob转换为Mp3但文件无法播放

时间:2013-11-20 07:10:56

标签: java android android-mediaplayer java-io

这是我将blob转换为mp3的功能:

private void convertByyeToMP3(byte[] bytearray,String trackName) {
            try {
                ContextWrapper c = new ContextWrapper(getApplicationContext());
                File directory = new File(c.getFilesDir().getAbsolutePath()
                        + "/Music");
                if (!directory.exists()){
                    directory.mkdir();
                }
                File tempMp3 = File.createTempFile(trackName, ".mp3",
                        directory);
                FileOutputStream fos = new FileOutputStream(tempMp3);
                fos.write(bytearray);
                fos.close();
                Log.d("Byte array to mp3 conversion: ", "successfull");
            } catch (Exception ex) {
                Log.d("In convertToByteToMp3 Function:", ex.toString());
            }
        }

当我执行此功能时,我可以在我的app文件夹中看到创建的mp3文件,但是当我尝试播放它们时使用我自己的代码或使用ES文件资源管理器,它们都无法播放。

这是我用来播放音乐的功能:

private MediaPlayer mp = new MediaPlayer();
    private void playSong(String songPath) {
        try {
            mp.reset();
            mp.setDataSource(songPath);
            mp.prepare();
            mp.start();
        } catch (IOException e) {
            Log.v(getString(R.string.app_name), e.getMessage());
        }
    }

我使用此示例代码播放曲目:

ContextWrapper c = new ContextWrapper(getApplicationContext());
        File directory = new File(c.getFilesDir().getAbsolutePath() + "/Music");
        playSong(directory.getPath() + File.separator + "kurchina");

这是我读取数据库并发送blob的地方:

cursor = mDbHelper.GetTables();
            byte[] blob = null;
            DATAS data = new DATAS();
            while (cursor.moveToNext()) {
                blob = cursor.getBlob(cursor.getColumnIndex("data"));
                if (blob != null) {convertByyeToMP3(blob,data_MusicName);}
                db.addDATAS(data);
            }

仅供参考:
   - 添加到清单的读取和写入权限。
   - 检查路径和文件名,它们存在   -blob字节未损坏

2 个答案:

答案 0 :(得分:1)

在您向我们展示的代码或其他地方,有各种各样的问题可能出错。所以你需要自己进行故障排除。有条不紊。

  1. 找出问题与您提取的歌曲文件或播放方式有关。例如,尝试使用独立的mp3播放器实用程序播放提取的文件。

  2. 假设问题是提取的文件,接下来要弄清楚文件是否与最初插入数据库的文件相同。使用相关的外部应用程序比较文件大小和校验和。

  3. 等等。

答案 1 :(得分:1)

发现问题。
它没有播放,因为音乐文件存储在我的app文件夹中,只能使用root设备访问。
当我将音乐复制到我的SD卡时,它们播放得很好,但是在使用root用nexus 7的app文件夹中,即使使用mp3播放器应用也无法播放它。