0

ここでAndroidプログラミングを始めました。

私は周りを見回して、これが一般的な問題であることがわかりましたが、簡単な修正は実際にはわかりません...私はNexus 7(AVDと物理デバイスを試しました)で次のコードを実行しようとしています運がまったくない。それは次のようです:

camera.setPreviewDisplay(SurfaceHolder);

しかし、私は間違っている可能性があります。現在のコードは次のとおりです。

public class MainActivity extends Activity implements SurfaceHolder.Callback{

 Camera camera;
 SurfaceView surfaceView;
 SurfaceHolder surfaceHolder;
 boolean previewing = false;;

   @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.cameralayout);


       getWindow().setFormat(PixelFormat.UNKNOWN);
       surfaceView = (SurfaceView)findViewById(R.id.surfaceview);
       surfaceHolder = surfaceView.getHolder();
       surfaceHolder.addCallback(this);

   }

   public void onClick() {
    // TODO Auto-generated method stub
    if(!previewing){
     camera = Camera.open();
     if (camera != null){
      try {
       camera.setPreviewDisplay(surfaceHolder);
       camera.startPreview();
       previewing = true;
      } catch (IOException e) {
       e.printStackTrace();
      }

    }
    }
   }

アイデアはありますか?ご協力ありがとうございました!

4

1 に答える 1

1

についてのAndroidドキュメントからCamera.open()

デバイスの最初の背面カメラにアクセスするための新しいCameraオブジェクトを作成します。デバイスに背面カメラがない場合、これはnullを返します。

それはあなたに後ろ向きのカメラへのアクセスだけを与えます。

Nexus7で次のコードを実行しようとしています

Camera.open()nullNexus 7にはバックカメラがなく、フロントカメラしかないために戻ります。

この方法を試すことができます

public Camera getCamera()
{

    for(int i = 0; i < Camera.getNumberOfCameras(); i++)
        return Camera.open(i);

    return null;
}

応募する、

camera = getCamera();
于 2013-03-18T03:36:55.883 に答える