在Android中,摄像头捕捉的图像应该被转发到下一个屏幕。

3

这是我的代码

package com.marakana;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.content.Intent;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.Toast;

public class CameraActivity extends Activity {
  private static final String TAG = "CameraDemo";
  Preview preview; // <1>
  Button buttonClick; // <2>
  myglobal m=new myglobal();
  String aa;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    preview = new Preview(this); // <3>
    ((FrameLayout) findViewById(R.id.preview)).addView(preview); // <4>

    buttonClick = (Button) findViewById(R.id.buttonClick);
    buttonClick.setOnClickListener(new OnClickListener() {
      public void onClick(View v) { // <5>
        preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
      }
    });

    Log.d(TAG, "onCreate'd");
  }

  // Called when shutter is opened
  ShutterCallback shutterCallback = new ShutterCallback() { // <6>
    public void onShutter() {
      Log.d(TAG, "onShutter'd");
    }
  };

  // Handles data for raw picture
  PictureCallback rawCallback = new PictureCallback() { // <7>
    public void onPictureTaken(byte[] data, Camera camera) {
      Log.d(TAG, "onPictureTaken - raw");
    }
  };

  // Handles data for jpeg picture
  PictureCallback jpegCallback = new PictureCallback() { // <8>
    public void onPictureTaken(byte[] data, Camera camera) {
      FileOutputStream outStream = null;
      try {
        // Write to SD Card


          outStream = new FileOutputStream(String.format("/sdcard/DCIM/%d.jpg",
            System.currentTimeMillis()));

          m.setAa(aa);
         Toast.makeText(getBaseContext(),aa,1000).show();
        outStream.write(data);
        outStream.close();
        Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
        Intent i=new Intent();
        i.setClassName("com.marakana", "com.marakana.image");
        startActivity(i);
      } catch (FileNotFoundException e) { // <10>
        e.printStackTrace();
      } catch (IOException e) {
        e.printStackTrace();
      } finally {
      }
      Log.d(TAG, "onPictureTaken - jpeg");
    }
  };

}

让你的问题更加精确和易读。现在阅读起来真的很痛苦。 - Rohit Sharma
这是我的代码...还有问题吗? - type-a1pha
2个回答

2
我认为最好你将路径发送到下一个活动中,这样你就可以从该活动中读取它。
String path =  String.format("/sdcard/DCIM/%d.jpg",System.currentTimeMillis());
outStream = new FileOutputStream(path);
//other codes 
Intent i=new Intent();
i.setClassName("com.marakana", "com.marakana.image");
i.putExtra("path", path);
startActivity(i);

因此,您可以通过以下方式访问该路径:

String path = getIntent().getExtra("path");
//so you can create drawable or bitmap using this path

我已经获取了路径,但无法使用位图进行解码 Bitmap yourSelectedImage = BitmapFactory.decodeFile(path); - kanchan

0
i.putExtra("img", data);

然后在另一个活动中,只需使用

getIntent().getExtra("img");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接