Привет всем Сегодня я столкнулся с непредвиденным сбоем в моем коде приложения для Android, отлично работает со всеми устройствами, кроме Micromax A250. Код, я использую для воспроизведения видео из необработанной папки выглядит следующим образом:Micromax A250 throws java.lang.StringIndexOutOfBoundsException перед воспроизведением видео в VideoView
if (mediaControls == null) {
mediaControls = new MediaController(AndroidVideoViewExample.this);
}
myVideoView = (VideoView) findViewById(R.id.video_view);
try {
myVideoView.setMediaController(mediaControls);
Uri uri=Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.samplevideo);
Log.d("URI", uri.toString());
myVideoView.setVideoURI(uri);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
myVideoView.requestFocus();
myVideoView.setOnPreparedListener(new OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
myVideoView.start();
}
});
LogCat следы:
12-28 15: 08: 30,547: E/AndroidRuntime (21939): FATAL ИСКЛЮЧЕНИЕ: main 12-28 15: 08: 30.547: E/AndroidRuntime (21939): java.lang.StringIndexOutOfBoundsException: length = 11; regionStart = 0; regionLength = -1 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at java.lang.String.startEndAndLength (String.java:583) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at java.lang.String.substring (String.java:1464) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.widget.VideoView.openВидео (VideoView.java : 407) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.widget.VideoView $ 6.surfaceCreated (VideoView.java:727) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.SurfaceView.updateWindow (SurfaceView.java:606) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.SurfaceView.access $ 000 (Su rfaceView.java:88) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.SurfaceView $ 3.onPreDraw (SurfaceView.java:183) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.ViewTreeObserver.dispatchOnPreDraw (ViewTreeObserver.java:692) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.ViewRootImpl.performTraversals (ViewRootImpl.java:2123) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.ViewRootImpl.doTraversal (ViewRootImpl.java:1139) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.ViewRootImpl $ TraversalRunnable.run (ViewRootImpl.java:4879) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): на android.view.Choreographer $ CallbackRecord.run (Хореограф.ява:776) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.Choreographer.doCallbacks (Choreographer.java:579) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.Choreographer.doFrame (Хореограф.java:548) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.view.Choreographer $ FrameDisplayEventReceiver.run (Хореограф.java:762) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.os.Handler.handleCallback (Handler.java:725) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.os.Handler.dispatchMessage (Handler.java:92) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android.os.Looper.loop (Looper.java:153) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at android .app.ActivityThread.main (ActivityThread.java:5297) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at java.lang.reflect.Method.invokeNative (собственный метод) 12-28 15 : 08: 30.547: E/AndroidRuntime (21939): at java.lang.reflect.Method.invoke (Method.java:511) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at com .android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:833) 12-28 15: 08: 30.547: E/AndroidRuntime (21939): at com.android.internal.os.ZygoteInit.main (ZygoteInit.Java: 600) 12-28 15: 08: 30,547: Е/AndroidRuntime (21939): в dalvik.system.NativeStart.main (нативный метод)
и журнала трассировки для URI являются:
URI android.resource: //com.samplePlayVideo/2130968576
Я не знаю, почему это происходит ... помощь Оценил! заранее спасибо.
Попробуйте распечатать URL: Uri.parse ("android.resource: //" + getPackageName() + "/" + R.raw.samplevideo) –
@ S-MILE-S получает uri во время отладки, но придет ошибка –
Все телефоны Micromax сталкиваются с этой проблемой, это конфликт конкретных поставщиков. Это включает в себя Micromax A117 и другие. Одно из возможных хакерских решений - обнаружить Micromax в качестве производителя, и если да, вместо использования VideoView, используйте TextureView для ваших видео. Это может остановить сбои. Хотя лично я считаю, что лучший способ действий - добавить это устройство в список запретов. Я скорее сомневаюсь, что многие из них фактически используют это устройство по сравнению со всеми другими пользователями Android. – portfoliobuilder