私が抱えている問題は、デフォルトの Android ボイスレコーダーを使用して録音された .amr ファイルをプログラムで再生しようとしていることです。mp3ボイスレコーダーもダウンロードして再生しようとしましたが、どちらも機能しません。完全に機能する .amr ファイルと .mp3 ファイルをダウンロードしましたが、記録されているファイルだけが機能していないようです。
コードダンプ:
private static final String recording = new String(Environment.getExternalStorageDirectory().getPath()) + File.separatorChar + "My Documents" + File.separatorChar + "My Recordings";
ArrayList<String> songList = new ArrayList<String>();
private ListView playList;
private VideoView videoView;
private MediaController mediaController;
private void loadPlayList()
{
songList.clear();
File home = new File(recording);
if (home.listFiles( new AmrFilter()).length > 0) {
for (File file : home.listFiles(new AmrFilter())) {
songList.add(file.getName());
}
}
if (home.listFiles( new Mp3Filter()).length > 0) {
for (File file : home.listFiles(new Mp3Filter())) {
songList.add(file.getName());
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songList);
playList.setAdapter(adapter);
}
class AmrFilter implements FilenameFilter {
public boolean accept(File dir, String name) {
// TODO Auto-generated method stub
return (name.endsWith(".amr"));
}
}
private void refreshPlayList()
{
songList.clear();
File home = new File(SD_PATH);
if (home.listFiles( new Mp3Filter()).length > 0) {
for (File file : home.listFiles(new Mp3Filter())) {
songList.add(file.getName());
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, songList);
playList.setAdapter(adapter);
}
private void playFile(String currentFile) throws IllegalArgumentException, SecurityException, IllegalStateException, IOException {
videoView.setVideoPath(currentFile);
videoView.start();
playBtn.setVisibility(View.VISIBLE);
// Set the progress max
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
playBar.setMax(videoView.getDuration());
startSeekbar.setMax(videoView.getDuration());
startSeekbar.setProgress(videoView.getCurrentPosition());
stopSeekbar.setMax(videoView.getDuration());
stopSeekbar.setProgress(videoView.getDuration());
int msec = videoView.getDuration();
int time[] = secondsToMinutes(msec);
totalPlayTime.setText(time[0] + ":" + time[1] + ":" + time[2]);
}
});
handler.postDelayed(runner, 1000);
}
logcat エラーは次のとおりです。
07-01 05:51:45.363: E/MediaPlayer(2912): error (1, -2147483648)
07-01 05:51:45.383: E/MediaPlayer(2912): Error (1,-2147483648)
07-01 05:51:45.383: D/VideoView(2912): Error: 1,-2147483648
問題が何であるかはわかりませんが、私が記録したものに限定されています。Android mp3プレーヤーはmp3録音を再生できるため、ファイルのアクセス許可ではないと思います。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.jahed.medialooper.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>