2015-12-28 5 views
0

Привет всем Сегодня я столкнулся с непредвиденным сбоем в моем коде приложения для 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

Я не знаю, почему это происходит ... помощь Оценил! заранее спасибо.

+0

Попробуйте распечатать URL: Uri.parse ("android.resource: //" + getPackageName() + "/" + R.raw.samplevideo) –

+0

@ S-MILE-S получает uri во время отладки, но придет ошибка –

+1

Все телефоны Micromax сталкиваются с этой проблемой, это конфликт конкретных поставщиков. Это включает в себя Micromax A117 и другие. Одно из возможных хакерских решений - обнаружить Micromax в качестве производителя, и если да, вместо использования VideoView, используйте TextureView для ваших видео. Это может остановить сбои. Хотя лично я считаю, что лучший способ действий - добавить это устройство в список запретов. Я скорее сомневаюсь, что многие из них фактически используют это устройство по сравнению со всеми другими пользователями Android. – portfoliobuilder

ответ

0

Его проблема в некоторых устройствах Micromax, videoview не поддерживается, поэтому я нашел решение, а не используя videoview. Я использую SurfaceView и работает на всех устройствах.