Я хочу воспроизвести видео a.m4v в живых обоях с помощью MediaPlayer от APIDemo. Я использовал следующий код и отлично работаю в деятельности MediaPlayer.Не удалось прочитать файл в Android-сервисе
AssetFileDescriptor afd = getResources().openRawResourceFd(R.raw.a);
mMediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
Это не удается, когда я поместил код в LivWallpaperService. Я думаю, что это связано с разрешением файла.
04-05 12:32:58.598: D/MediaPlayerDemo(5308): onPrepared called
04-05 12:32:58.598: V/MediaPlayerDemo(5308): startVideoPlayback
04-05 12:32:59.153: D/MediaPlayerDemo(5308): player starting
04-05 12:33:00.004: E/MediaPlayer(5308): error (1, -19)
04-05 12:33:00.004: E/MediaPlayer(5308): Error (1,-19)
Поэтому я пытаюсь скопировать файл во временный файл, но все еще получаю ошибку.
InputStream is = getResources().openRawResource(R.raw.a);
File tempfile = File.createTempFile("mediaplayer", "temp",this.getCacheDir());
String tempfilepath = tempfile.getAbsolutePath();
FileOutputStream fo = new FileOutputStream(tempfile);
BufferedOutputStream bis = new BufferedOutputStream(fo);
int count = 0;
byte buf[] = new byte[128];
do {
int numread = is.read(buf);
count+=numread;
if (numread <= 0)
break;
bis.write(buf, 0, numread);
} while (true);
Log.d(TAG, "tempfile.length()"+tempfile.length());
Log.d(TAG, is.toString());
mMediaPlayer.setDataSource(tempfilepath)
04-05 12:46:36.981: E/MediaPlayerDemo(6000): error: null
04-05 12:46:36.981: E/MediaPlayerDemo(6000): java.lang.IllegalStateException
04-05 12:46:36.981: E/MediaPlayerDemo(6000): at
android.media.MediaPlayer.setDataSource(Native Method)
Кто-нибудь знает, почему я не могу прочитать из AssetFileDescriptor?
и почему я не могу прочитать файл, который я создал внутри пакета?
Я пробовал и по-прежнему получал ту же ошибку. это просто «разные» между запуском кода в действии и WallpaperService. – user1297295