Простой Android-фонарик приложение


Один из моих первых проектов. Я представляю вам приложение фонарик для Android!

public class MainActivity extends AppCompatActivity {
    Camera cam = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void onBtn(View view) {
        if (checkCameraHardware(this)){
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
               if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1);
                    handleFlash();
               }else {
                   handleFlash();
                   System.out.println("Check : has permission");
               }
            }
        }
    }
    public void handleFlash() {
            if (cam == null){
                cam = getCameraInstance();
            }
            Camera.Parameters parameters = cam.getParameters();
            if (parameters.getFlashMode().equals(Camera.Parameters.FLASH_MODE_OFF)) {
                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                cam.setParameters(parameters);
                cam.startPreview();
            } else if (parameters.getFlashMode().equals(Camera.Parameters.FLASH_MODE_TORCH)) {
                parameters.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                camEnd();
            }
    }

    public static Camera getCameraInstance(){
        Camera camera = null;
        try {
            camera = Camera.open(); // attempt to get a Camera instance
        }
        catch (Exception e){
            // Camera is not available (in use or does not exist)
            e.printStackTrace();
        }
        return camera; // returns null if camera is unavailable
    }
    private boolean checkCameraHardware(Context context) {
        if(context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
            return true;
        } else {
            return false;
        }
    }

    public void camEnd() {
        cam.release();
        cam = null;
    }
    @Override
    protected void onDestroy() {
        super.onDestroy();
        camEnd();
    }
}

Я испытал это на моем зефира устройства и он работает, как ожидалось (но не на мой Lollipop устройства по какой-то причине). Любые предложения, было бы здорово!



250
0
задан 23 марта 2018 в 12:03 Источник Поделиться
Комментарии
1 ответ

Ваш внутренний if-else Это неверно, и вот почему это не работает под Marshmallow.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
System.out.println("Check : has permission");
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 1);
handleFlash();
}
} else {
handleFlash();
}

2
ответ дан 14 июня 2018 в 01:06 Источник Поделиться