首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VideoView FullScreen点击FullScreen图标

VideoView FullScreen点击FullScreen图标
EN

Stack Overflow用户
提问于 2018-01-14 08:21:11
回答 1查看 1.5K关注 0票数 0

我正在创建android应用程序。我成功地添加了媒体控制和添加小图标在视频视图全屏视频到LandScape模式时,点击全屏图标。但是我在点击FullScreen图标时出错了。这是我的密码。

详细信息活动:

代码语言:javascript
复制
import android.content.Intent;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.TextView;
import android.widget.VideoView;

import org.w3c.dom.Text;

public class DetailsActivity extends AppCompatActivity {
    VideoView vidView;
    TextView description;
    ImageButton mPlayButton;
    TextView movienamedetails;
    TextView movieCategory;
    ImageView imageCover;
    TextView movieDuration;
    TextView movieYear;
    private static final String TAG = "MainActivity";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_details);
        vidView=(VideoView) findViewById(R.id.myVideo);
        description=(TextView)findViewById(R.id.tv_description_detail);
        imageCover=(ImageView)findViewById(R.id.imagecoverdetails);
        movienamedetails = (TextView) findViewById(R.id.movienamedetails);
        movieCategory = (TextView) findViewById(R.id.moviecategorty);
        movieDuration = (TextView) findViewById(R.id.movieDuration);
        movieYear = (TextView) findViewById(R.id.moviedate);

        String fullScreen =  getIntent().getStringExtra("fullScreenInd");
        if("y".equals(fullScreen)){
            getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                    WindowManager.LayoutParams.FLAG_FULLSCREEN);
            getSupportActionBar().hide();
        }
        Intent intent = getIntent();

        String desc_detail = intent.getStringExtra("description_details");
        String movie_name = intent.getStringExtra("moviename_details");
        String movie_category = intent.getStringExtra("movie_category");
        String movie_durationz = intent.getStringExtra("movie_duration");
        String movie_time = intent.getStringExtra("movie_year");
        int image = intent.getIntExtra("image",0);
        String vidAddress = intent.getStringExtra("movie_links");
        imageCover.setImageResource(image);
        Uri vidUri = Uri.parse(vidAddress);
        vidView.setVideoURI(vidUri);
        mPlayButton = (ImageButton) findViewById(R.id.play_button);
        mPlayButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                vidView.start();
                // hide button once playback starts
                    mPlayButton.setVisibility(View.GONE);
                }
        });

        MediaController vidControl = new FullScreenMediaController(this);
        vidControl.setAnchorView(vidView);
        vidView.setMediaController(vidControl);
        description.setText(desc_detail);
        movienamedetails.setText(movie_name);
        movieCategory.setText(movie_category);
        movieDuration.setText(movie_durationz);
        movieYear.setText(movie_time);
    }
}

FullScreenMediaController :

代码语言:javascript
复制
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.Gravity;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.MediaController;

public class FullScreenMediaController extends MediaController {

    private ImageButton fullScreen;
    private String isFullScreen;

    public FullScreenMediaController(Context context) {
        super(context);
    }

    @Override
    public void setAnchorView(View view) {

        super.setAnchorView(view);

        //image button for full screen to be added to media controller
        fullScreen = new ImageButton(super.getContext());

        FrameLayout.LayoutParams params =
                new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,
                        LayoutParams.WRAP_CONTENT);
        params.gravity = Gravity.RIGHT;
        params.rightMargin = 80;
        addView(fullScreen, params);

        //fullscreen indicator from intent
        isFullScreen =  ((Activity)getContext()).getIntent().
                getStringExtra("fullScreenInd");

        if("y".equals(isFullScreen)){
            fullScreen.setImageResource(R.drawable.fullscreenexit);
        }else{
            fullScreen.setImageResource(R.drawable.fullscreen);
        }

        //add listener to image button to handle full screen and exit full screen events
        fullScreen.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent intent = new Intent(getContext(),DetailsActivity.class);

                if("y".equals(isFullScreen)){
                    intent.putExtra("fullScreenInd", "");
                }else{
                    intent.putExtra("fullScreenInd", "y");
                }
                ((Activity)getContext()).startActivity(intent);
            }
        });
    }
}

错误原因的日志是:

01-14 09:38:51.908 10500-10500/com.app.show E/AndroidRuntime:致命异常:主进程: com.zeeshan.echoshow,PID: 10500 java.lang.RuntimeException:无法启动活动android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3003) java.lang.NullPointerException: uriString at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3064) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659) at android.os.Handler.dispatchMessage(Handler.java:102)在android.app.ActivityThread.main(ActivityThread.java:6823) at android.os.Looper.loop(Looper.java:154) at java.lang.reflect.Method.invoke(原生方法) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451) at : java.lang.NullPointerException: uriString at android.net.Uri$StringUri.(Uri.java:475) at android.net.Uri$StringUri在com.zeeshan.echoshow.DetailsActivity.onCreate(DetailsActivity.java:63) at android.app.Activity.performCreate(Activity.java:6977) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3064) at android.app.ActivityThread.-wrap14(ActivityThread.java在android.net.Uri.parse(Uri.java:437))在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154)在android.app.ActivityThread.main(ActivityThread.java:6823) at java.lang.reflect.Method.invoke(原生方法)

应用程序截图:

EN

回答 1

Stack Overflow用户

发布于 2018-01-14 08:35:08

在DetailsActivity、OnCreate方法中,您期望Uri具有意图。您没有从DetailsActivity中从FullScreenMediaController发送所有您期望的数据。

代码语言:javascript
复制
String vidAddress = intent.getStringExtra("movie_links");
        imageCover.setImageResource(image);
        Uri vidUri = Uri.parse(vidAddress);

在FullScreenMediaController中,您可以发送Uri,类似于:

代码语言:javascript
复制
ntent intent = new Intent(getContext(),DetailsActivity.class);

            if("y".equals(isFullScreen)){
                intent.putExtra("fullScreenInd", "");
            }else{
                intent.putExtra("fullScreenInd", "y");
            }
            intent.putExtra("Movie URI Here", "movie_links");
            ((Activity)getContext()).startActivity(intent);

此外,还应通过检查来为空值做好准备:

代码语言:javascript
复制
    if(vidAddress != null ){
       Uri vidUri = Uri.parse(vidAddress);
// some more code here

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48247810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档