Android:使用相机帮助,拍照并在我的应用上使用它

时间:2010-11-01 21:30:43

标签: android camera android-emulator

我已经从我的应用程序中创建了一个startcam ..这就是凸轮活动的样子......我不知道如何点击拍照,按钮在哪里?

我想要做的是,当他拍摄照片并且他已经完成状态时,他点击“完成按钮”,这样照片就会显示在我的应用上。

alt text

4 个答案:

答案 0 :(得分:1)

您无法使用模拟器拍照,我听说有一个图书馆使用网络摄像头来集成功能,但我没有使用它,所以它可能是一个秘密。

所以,很遗憾地说,但你需要一台设备来测试它。

Per developers.android.com:

  

模拟器限制在此   释放,限制了   模拟器包括:

     
      
  • 不支持拨打或接听实际的电话。你可以模拟   电话(放置和接收)   但是,通过模拟器控制台。
  •   
  • 不支持USB连接
  •   
  • 不支持相机/视频捕捉(输入)。
  •   
  • 不支持设备连接耳机
  •   
  • 不支持确定连接状态
  •   
  • 不支持确定电池电量和AC充电状态
  •   
  • 不支持确定SD卡插入/弹出
  •   
  • 不支持蓝牙
  •   

希望有一天他们会加上它。

答案 1 :(得分:1)

我在developers.android.com上看到同样的事情,但我的模拟器有一个工作的相机应用程序。模拟器上的相机按钮本身没有任何作用,但我可以从我的应用程序访问它,它给了我一个这样的相机:

Android emulator camera

您会看到左下方的按钮拍摄照片,然后会弹出一个确定按钮,然后将其返回到您的代码中。

我的模拟器设置为:

  • Android 1.6(API Level 4)
  • 皮肤:HVGA
  • SD卡:1024M
  • hw.lcd.densite:160

我相信你需要SD卡,不确定其他任何事情。

答案 2 :(得分:1)

您可以使用USB调试在物理设备上调试相机应用程序。

要拍摄并保存图片,您需要一个类似于此的回调: `

Camera.PictureCallback mPictureCallback = new Camera.PictureCallback(){

    @Override
    public void onPictureTaken(byte[] data, Camera camera) {

        try {
            File sdTargetDirectory = new File("/sdcard/directory");
            sdTargetDirectory.mkdirs();  // make the above directory if it does not exist
            FileOutputStream fos = null;
            String fileName = "temp";

            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);

            fos = new FileOutputStream(sdTargetDirectory.toString() +"/" + fileName + ".jpg");

            BufferedOutputStream bos = new BufferedOutputStream(fos);

            bitmap.compress(CompressFormat.JPEG, 100, bos);

            bos.flush();
            bos.close();


        } 
        catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    }
};

您可以在触摸或按钮事件中实现该回调,如下所示:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction() & MotionEvent.ACTION_MASK) {
    case MotionEvent.ACTION_UP:
        camera.takePicture(null, null, mPictureCallback);
        break;
    }
    return true;
}

答案 3 :(得分:0)

请在模拟器设置中启用相机。您应该将模拟器设置为:

camera support = yes

我认为此功能适用于Android 4.0版本,但我不确定。