2017-09-05 44 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) { 
      ... 
     } 
}