

カメラアプリを開発中のものです。

カメラから取得される映像をSurfaceView上に表示したいのですが、できません。  
写経して試そうとしても、タイトル通りの「open」が赤字のままです。  
それ以外にも「release」や「setPreviewDisplay」なども赤字です（カメラを使用するには必要な部分？）  
importで、android.hardware.Camera（若しくはCamera2）を使用したいのですが、できません。 使うと横線が引かれます。

なにがいけないのかさっぱりわかりません。教えていただけますか？

以下がコードです。

[code]

    import android.content.Context;
    import android.content.pm.PackageManager;
    import android.hardware.camera2.CameraDevice;
    import android.os.Bundle;
    import android.view.SurfaceHolder;
    import android.view.SurfaceView;
    import android.widget.LinearLayout;
    
    public class MainActivity extends AppCompatActivity {
    
        private boolean checkCameraHardware(Context context) {
            if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)){
                // this device has a camera
                return true;
            } else {
                // no camera on this device
                return false;
            }
        }
    
        public static CameraDevice getCametaInstance(){
            CameraDevice c = null;
            try {
                c = CameraDevice.open(); // attempt to get a Camera instance
            }
            catch (Exception e){
                // Camera is not available (in use or does not exist)
            }
            return c; // returns null if camera is unavailable
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
    }
    
[/code]


CC BY-SA 4.0
2019-11-07T22:25:00.580
60339
2020-07-23T06:25:50.393
2019-11-08T00:20:56.807
3060
36090
question
java android
Camera.open()の「open」がずっと赤字になる


新しい
[android.hardware.camera2.CameraDevice](https://developer.android.com/reference/android/hardware/camera2/CameraDevice)
クラスには`open()`メソッドは存在しません。

古い
[android.hardware.Camera](https://developer.android.com/reference/android/hardware/Camera)
クラスには`open()`メソッドが存在しますが、このクラス自体がAPIレベル21 (Android 5.0) 以降で廃止予定 (deprecated)
となっています。  
以下のリファレンス先頭の「注」を参照してください。

  * [Camera API | Android デベロッパー | Android Developers](https://developer.android.com/guide/topics/media/camera?hl=ja)

Android 5.0 以降をターゲットにする場合、新しいCamera2 APIを使用する必要があります。

Android 4.x 以前を今からサポートしようとするのは全く推奨できませんが、もしどうしても Android 4.x
以前もターゲットにしたい理由があるのであれば、Android OSのバージョンの差異を吸収してくれる互換ライブラリの
[androidx.camera](https://developer.android.com/jetpack/androidx/releases/camera?hl=en)
を使う方法もあります。ただし`androidx.camera`は2020年7月現時点でまだベータ版です。

Androidは仕様変更やAPIセットの廃止・入れ替えが激しいOSなので、内容がすぐに陳腐化する安価な書籍類は参考にしないほうがよいです。  
（陳腐化しないのはAndroidカーネルの内部を解説するような、ごく一部の書籍に限られます）


CC BY-SA 4.0
2020-07-23T06:25:50.393
68853
2020-07-23T06:25:50.393
15413
60339
answer