2012-05-11 6 views
1

私はまだ開発が新しく、Android:画像取り込み/取り消しの後に新しいボタンを追加

スキーム:画像をキャプチャするためにcapture_buttonを押した後

capture_buttonimagePreviewは同じ活性である)、Iはcapture_buttonを除去しACCEPT又はDECLINEボタンしたいと思います。これらのボタンは、画像をacceptとし、保存するか、画像をdeclineとし、imagePreviewに戻ります。

今、私はIntentのいくつかの種類を行うことになっています、今、

PhotoActivity.java

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.photo); 

     mCamera = getCameraInstant(); 
     mCameraPreview = new CameraPreview(this, mCamera); 

     FrameLayout preview = (FrameLayout) findViewById(id.camera_preview); 
     preview.addView(mCameraPreview); 

     // Add a listener to the Capture button 
     Button captureButton = (Button) findViewById(id.button_capture); 
     captureButton.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        // get an image from the camera 
        mCamera.takePicture(null, null, mPicture); 

       } 
      } 
     ); 
    } 

PictureCallback mPicture = new PictureCallback(){ 
     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
     Log.e("photo","pictureCallback"); 
      // TODO Auto-generated method stub 
      File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
      if(pictureFile==null){ 
       return; 
      } 
      try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 
      } catch (FileNotFoundException e) { 
       Log.d(TAG, "File not found: " + e.getMessage()); 
      } catch (IOException e){ 
       Log.d(TAG, "Error accessing file: " + e.getMessage()); 
      } 
     } 
}; 

    private File getOutputMediaFile(int type){ 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES), "Photo"); 
     if (!mediaStorageDir.exists()){ 
      if (! mediaStorageDir.mkdirs()){ 
       Log.d("Photo", "failed to create directory"); 
       return null; 
      } 
     } 
     // Create a media file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
     File mediaFile; 
      mediaFile = new File(mediaStorageDir.getPath() + File.separator + 
      "IMG_"+ timeStamp + ".jpg"); 
     return mediaFile; 
    } 

私はcapture_buttonが押されたときに別のアクティビティを作成することになってるのかはわかりませんcapture_buttonクリックした後、または

PictureCallback mPicture = new PictureCallback(){ 

後にし、他の活動で onPictureTakenがありますか?それとも私の考えは間違っていますか?

助けてください?

ありがとうございます。

答えて

0

それはXMLファイルでのごACCEPT DECLINEレイアウトを作成し、ONのPICTUREは、摂取した場合、ITを不可視にする場合はITが良くなるあなた

 final LinearLayout accept_deciline = new LinearLayout(getApplicationContext()); 
     LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); 
     accept_deciline.setOrientation(LinearLayout.HORIZONTAL); 
     Button accept = new Button(getApplicationContext()); 
     accept.setText("Accept"); 
     Button decline = new Button(getApplicationContext()); 
     decline.setText("Decline"); 
     accept_deciline.addView(accept); 
     accept_deciline.addView(decline); 
     addContentView(accept_deciline, lp); 
     accept_deciline.setVisibility(View.INVISIBLE); 

     accept.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       // SAVE YOUR IMAGE. 
      } 
     }); 

     decline.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      } 
     }); 
     //KEEP THIS LINE IN YOUR PICTURE CALLBACK NOT HERE. 
     accept_deciline.setVisibility(View.VISIBLE); 

役立つこれを試すにはちょうどそれが見えるように呼び出されます。

0

私がしたことの1つは、撮影後にポップアップする警告ダイアログを使用することです。あなたは何を起こしたいか(受諾または辞退)に応じて、必要なアクションを実行するようにonclickリスナーを設定できます。これにより、レイアウトを変更してボタンを追加して削除する必要がなくなります。 alertDialogを起動するには、onPictureTakenメソッドの最後にalertdialog.show()メソッドを配置します。

これを行うと、直前に撮影した画像のファイルパスが必要になるため、ユーザーが拒否した場合にユーザーが破棄できるようにすることができます。また、一部のデバイスでは、メディアサービスに数秒あなたがイメージを破壊するために行くなら、あなたは力を閉じることができます参照してください。これを行うにはいくつかの方法があり、現時点では覚えていませんが、そのうちの1つは残りの部分より速いです。

他の種類のアクション、活動、サービスなどを開始する予定がない限り、意図は必要ありません。たとえば、イメージのファイルパスを変更したり、アップロードしたり、何を持っているかを別のアクティビティに渡したい場合は、イメージのファイルパスを次のようなインテントに追加することができます: intent.putExtra "imagepath"、imagepath);

関連する問題