播放视频前,询问有关视频播放器播放 [英] Before play video ask about the video player to play

查看:130
本文介绍了播放视频前,询问有关视频播放器播放的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序可以播放视频从互联网上,它正常工作时there's只有一个视频播放器(默认的),但是当有更多的失败。因此,我想要做的是前播放视频问起播放器播放。我发现这个职位

I have an app that plays video from internet, it works fine when there´s only one video player (the default one) but when there are more it fails. So what I want to do is before play the video ask about the player to play. I found this post

<一href="http://stackoverflow.com/questions/12972445/android-list-of-installed-media-players?rq=1">android-list安装媒体玩家的

但即使我做PackageManager packageManager = getPackageManager();得到该实例的应用程序失败

but even if I do PackageManager packageManager = getPackageManager(); to get the instance the app fails

protected void onCreate(Bundle savedInstanceState){

     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_video);

      videoView = (VideoView) findViewById(R.id.videoView);
      Intent intent = new Intent(Intent.ACTION_VIEW);
      Uri uri = Uri.withAppendedPath(MediaStore.Video.Media.INTERNAL_CONTENT_URI,"1"); 
      intent.setData(uri);
      List<ResolveInfo> playerList;
      PackageManager packageManager = getPackageManager();
      playerList = packageManager.queryIntentActivities(intent, 0);
      ////////recoger variables de principal
      Bundle extras = getIntent().getExtras();
      String url = extras.getString("videoURL");

      if(playerList==null){
          PlayVideo(url);
      }
    }
    private void PlayVideo(String videoURL){

         try{      
             getWindow().setFormat(PixelFormat.TRANSLUCENT);
             MediaController mediaController = new MediaController(Video.this);
             mediaController.setAnchorView(videoView);           
              Uri video = Uri.parse(videoURL);             
              videoView.setMediaController(mediaController);
              videoView.setVideoURI(video);
              videoView.requestFocus();              
              videoView.setOnPreparedListener(new OnPreparedListener(){

                  public void onPrepared(MediaPlayer mp){   
                      mp.setScreenOnWhilePlaying(true);
                      try {
                        mp.prepare();
                    } catch (IllegalStateException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                      progressDialog.dismiss();     
                      videoView.start();
                  }
              });  
         }
         catch(Exception e){
             progressDialog.dismiss();
             System.out.println("Video Play Error :"+e.toString());
             finish();
         } 

    }

这是logcat的

And this is the logCat

04-11 10:58:02.309: E/AndroidRuntime(11816): FATAL EXCEPTION: main
04-11 10:58:02.309: E/AndroidRuntime(11816): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.playvideo/com.example.playvideo.Video}: java.lang.IllegalStateException: Unknown URL
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.os.Looper.loop(Looper.java:130)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityThread.main(ActivityThread.java:3687)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at java.lang.reflect.Method.invokeNative(Native Method)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at java.lang.reflect.Method.invoke(Method.java:507)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at dalvik.system.NativeStart.main(Native Method)
04-11 10:58:02.309: E/AndroidRuntime(11816): Caused by: java.lang.IllegalStateException: Unknown URL
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.os.Parcel.readException(Parcel.java:1330)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.os.Parcel.readException(Parcel.java:1276)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityManagerProxy.getProviderMimeType(ActivityManagerNative.java:2843)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.content.ContentResolver.getType(ContentResolver.java:215)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.content.Intent.resolveType(Intent.java:3268)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.content.Intent.resolveTypeIfNeeded(Intent.java:3290)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ContextImpl$ApplicationPackageManager.queryIntentActivities(ContextImpl.java:2112)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at com.example.playvideo.Video.onCreate(Video.java:43)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-11 10:58:02.309: E/AndroidRuntime(11816):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
04-11 10:58:02.309: E/AndroidRuntime(11816):    ... 11 more

非常感谢你提前

Thank you very much in advance

推荐答案

我所做的是给力打去通过意图过滤介质播放器

What I did is to force to play de video with media player via intent-filter

这是在code

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />  
    <data android:mimeType="video/*" />
    <data android:mimeType="application/sdp" />
    <data android:pathPattern=".*3gp" />
    <data android:pathPattern=".*3GP" />
    <data android:pathPattern=".*mp4" />
    <data android:pathPattern=".*MP4" />
</intent-filter>

这对我的作品,并希望它适用于所有

It works for me and hope it works for all

这篇关于播放视频前,询问有关视频播放器播放的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆