2017-09-05 84 views
0

我试图在MainActivity上显示捕获的图像。问题是它说onActivityResult已经定义好了。我的第一个onActivityResult适用于VideoView。现在我必须为我的图片添加一个新的onActivityResult。我如何使这成为可能?我只需要一个onActivityResult?我必须把第二个onActivityResult放到第一个onActivityResult上吗?ImageView和VideoView对同一活动

这里是我的代码:

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); 
 
     } 
 
    } 
 

 
}

+0

它不是关于你的问题,但是,你不应该的地方观看初始化中onActivityResoult。把它放在一个init函数中,你可以放在onCreate中,这只是一个例子。另外,请检查ButterKnife库。 – barotia

回答

2

创建图像和VideoView视频两个视点的ImageView和使用:

@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; 
     } 
    } 
0

你只有一个onActivityResult(int requestCode, int resultCode, Intent data)

@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); 
        } 
        break; 
       case REQUEST_VIDEO_CAPTURE: 
        //bring your video stuff here 
        break; 
      } 
     } 

你的onActivityResult应该像上面的代码需要为您的活动类。每个函数只能在一个类中使用相同的参数类型和顺序进行声明。

0

你不能有两个具有相同签名的函数。

您必须有一个onActivityResult,并且在if语句中,您必须处理传输。

if(resultCode == Activity.RESULT_OK){  
     if (requestCode == CAMERA_REQUEST) { 
      ...  
     } 
     if (requestCode == REQUEST_VIDEO_CAPTURE) { 
      ... 
     } 
} 
相关问题