ZIPファイルで圧縮されたファイルを読み込む音楽再生機能付き画像ビュワーを開発中でして、
その中で、ZIPファイル内の音楽ファイルを直接読み込んで再生したいと考えています。
しかしながら、直接音楽ファイルを再生しようとすると、
音声が再生されないという状況になっています。
音楽再生のクラスは、
音声を再生するためのクラスsoundと
zipファイルからとったデータをFile型で返すクラスmeltFileName
zipファイルからとったデータをInputStream型で返すクラスAudioMeltFile
の3つで構成しています。
//SEを再生する
public void sound(){
//音声ファイルがあればファイルクラスを生成
mediaPlayerFileMP3 = meltFileName(zipPath, zipFile + File.separator + Integer.toString(pageNo) + "_" + Integer.toString(tapNo) + ".mp3");
mediaPlayerFileWAV = meltFileName(zipPath, zipFile + File.separator + Integer.toString(pageNo) + "_" + Integer.toString(tapNo) +".wav");
mediaPlayerFileOGG = meltFileName(zipPath, zipFile + File.separator + Integer.toString(pageNo) + "_" + Integer.toString(tapNo) +".ogg");
try{
//音声ファイルがあるかどうかを確認
if(mediaPlayerFileMP3 != null){
mediaPlayerFile = AudioMeltFile(zipPath, zipFile + File.separator + Integer.toString(pageNo) + "_" + Integer.toString(tapNo) + ".mp3");
}else if(mediaPlayerFileWAV != null){
mediaPlayerFile = AudioMeltFile(zipPath, zipFile + File.separator + Integer.toString(pageNo) + "_" + Integer.toString(tapNo) +".wav");
}else if(mediaPlayerFileOGG != null){
mediaPlayerFile = AudioMeltFile(zipPath, zipFile + File.separator + Integer.toString(pageNo) + "_" + Integer.toString(tapNo) +".ogg");
}
//MediaPlayer型の変数を生成
mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(IOUtils.toString(mediaPlayerFile));
mediaPlayer.setDisplay(holder);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
//プレイヤーの準備
mediaPlayer.prepare();
//プレイヤーの再生
mediaPlayer.start();
}catch(Exception e){
Log.d("ERROR",""+e);
}
}
//zipファイルからとったデータをFile型で返す
public static File meltFileName(String zipPath, String file){
File result = null;
try{
//zipファイルを抽象化
ZipFile zipFile = new ZipFile(zipPath);
//zipファイルの中身を抽象化
final ZipEntry entry = zipFile.getEntry(file);
if(entry != null){
result = new File(entry.getName());
}
}catch(Exception e){
}
return result;
}
//zipファイルからとったデータをInputStream型で返す
public static InputStream AudioMeltFile(String zipPath, String file){
InputStream result = null;
try{
//zipファイルを抽象化
ZipFile zipFile = new ZipFile(zipPath);
//zipファイルの中身を抽象化
final ZipEntry entry = zipFile.getEntry(file);
if(entry != null){
result = zipFile.getInputStream(entry);
}
}catch(Exception e){
}
return result;
}
前回にも同じような内容を投稿したのですが、
自分の力が未熟なため、未だに解決できていません。
ですので、大変申し訳ないのですが、
どなたかアドバイスをいただけないでしょうか。