質問: 開発中のアプリにカメラを搭載したいと考えています。 アクティビティの動きは以下のようになっています。 Home.java -> Camera.java -> Que.java Home.javaでStartボタンを押したら、Camera.javaが起動するようになっています。 カメラの搭載方法を調べてみたのですが、よくわかりませんでした。 調べた場所は複数ありますが、ここを参考にして行ってみましたができませんでした。 //http://blog.kotemaru.org/2015/05/23/android-camera2-sample.html Camera.javaで行いたいことは以下のものです。 ・カメラを縦向きで起動 ・インカメラで撮影(カメラの切り替えができたらより良いです) ・プレビューを表示して、再撮影かnextを選択する ・次のアクティビティに移動 プレビューをしないで、そのまま受け渡しても良いのですが、 練習のためにプレビューの仕方も学べたらと考えています。 宜しくお願いいたします。 --追記 ビルドが通りませんでした。 Camera2StateMachine.javaにおいて、 mCameraManager.openCamera(cameraId, mStateCallback, mHandler); が、赤く、エラーが出ています。 他は、LoliPopまでに対応させる?ことでエラーは消えました。 Android Monitorより ``` Process: com.example.camera, PID: 3134 java.lang.NullPointerException: Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference at com.example.camera.MainActivity$SurfaceHolderCallback.surfaceCreated(MainActivity.java:43) at android.view.SurfaceView.updateWindow(SurfaceView.java:582) at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:177) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2055) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) at android.view.Choreographer.doCallbacks(Choreographer.java:670) at android.view.Choreographer.doFrame(Choreographer.java:606) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:844) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5417) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) ```
回答: > > 開発中のアプリにカメラを搭載したい > > > Cameraの実装はそこそこ面倒です。端末の機種依存もあります。更にRuntime Permissionにも対応しないといけません。 カメラの本格的なアプリでないならば、Intentで他のカメラアプリを起動させそれで撮影した画像を元のアプリに取り込むこともできます。 標準のカメラ等を起動させるので、機能もそこそこ見込めます。 ``` Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, RESULT_CAMERA); ``` 取り込みは ``` ... imageView.setImageURI(cameraUri); ``` 参考: