java - 同一 Activity 上的 ImageView 和 VideoView

标签 java android imageview android-videoview

我正在尝试在我的 MainActivity 上显示捕获的图像。问题是它说 onActivityResult 已经定义了。我的第一个 onActivityResult 是针对 VideoView 的。现在我必须为我的图像添加一个新的 onActivityResult。我如何使这成为可能?我只需要一个 onActivityResult 吗?我是否必须将第二个 onActivityResult 放在第一个 onActivityResult 上?

这是我的代码:

public class MainActivity extends Activity {

    private static final int CAMERA_REQUEST = 1888;
    private ImageView imageView;
    Button buttonPlay;
    Button buttonFullScreen;
    static final int REQUEST_VIDEO_CAPTURE = 1;
    VideoView resultvideo;
    MediaController mediacontroller;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);

        setContentView(R.layout.activity_main);

        resultvideo = (VideoView)findViewById(R.id.videoView);
        mediacontroller = new MediaController(MainActivity.this);

        mediacontroller.setAnchorView(resultvideo);

        resultvideo.setMediaController(mediacontroller);

        Button click = (Button)findViewById(R.id.buttonRecord);
        resultvideo = (VideoView)findViewById(R.id.videoView);

        this.imageView = (ImageView)this.findViewById(R.id.imageView);
        Button photoButton = (Button) this.findViewById(R.id.buttonCapture);
        photoButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                startActivityForResult(cameraIntent, CAMERA_REQUEST);
            }
        });
    }

    public void dispatchTakeVideoIntent(View v) {
        Intent takeVideoIntent = new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
        if (takeVideoIntent.resolveActivity(getPackageManager()) != null) {
            startActivityForResult(takeVideoIntent, REQUEST_VIDEO_CAPTURE);
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        final Uri videoUri = data.getData();
        if (requestCode == REQUEST_VIDEO_CAPTURE && resultCode == RESULT_OK) {

            resultvideo.setVideoURI(videoUri);
            mediacontroller.setAnchorView(resultvideo);
            resultvideo.pause();

        }
        buttonPlay = (Button) findViewById(R.id.buttonPlay);
        {
            buttonPlay.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    mediacontroller.show();
                    mediacontroller.setAnchorView(resultvideo);
                    resultvideo.start();
                }
            });
        }

        buttonFullScreen = (Button) findViewById(R.id.buttonFullScreen);
        {
            buttonFullScreen.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                    intent.putExtra("VIDEO_URI", videoUri.toString());
                    startActivity(intent);
                }
            });
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_REQUEST && resultCode == Activity.RESULT_OK) {
            Bitmap photo = (Bitmap) data.getExtras().get("data");
            imageView.setImageBitmap(photo);
        }
    }

}

最佳答案

为图像创建两个 View ImageView 并为视频创建 VideoView 并使用它:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode){
            case CAMERA_REQUEST:
                if (resultCode == Activity.RESULT_OK) {
                    Bitmap photo = (Bitmap) data.getExtras().get("data");
                    imageView.setImageBitmap(photo);
                    //Hide video view
                    videoview.setVisibility(View.GONE);

                }
                break;
            case REQUEST_VIDEO_CAPTURE:
                //bring your video stuff here
                videoview.setVisibility(View.VISIBLE);
                imageView.setVisibility(View.GONE);
                break;
        }
    }

关于java - 同一 Activity 上的 ImageView 和 VideoView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46058648/

相关文章:

java - 当数据包含不可显示的字符时,JAXB 输出无效的 XML

java - JPA : Additional fields in @JoinTable

android - 简单的 MySQL 数据库问题 - 每个应用程序用户的数据库?

Android:AsyncTask 中的 HTTP 请求不是并发的

java - 按顺序显示 x 个 ImageView y 秒

java - 什么情况下会抛出IllegalStateException?

列表流的 Java 8 映射

Android 为什么/何时使用 ExecutePendingBindings

android - ImageView 在 Inflated LinearLayout 上抛出 NullReferenceException

android - 在Android应用程序中居中对齐时如何找到 ImageView 的高度和宽度?