package learn.kotlin.com.androidopencv; import android.annotation.TargetApi; import android.content.DialogInterface; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Build; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; public class MainActivity extends AppCompatActivity { private static final String TAG = "AndroidOpenCv"; private Button mFaceRearCameraButton; private Button mFaceFrontCameraButton; private Button mGrayCameraButton; private Button mImageButton; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { if (!hasPermissions(PERMISSIONS)) { requestPermissions(PERMISSIONS, PERMISSIONS_REQUEST_CODE); } } mFaceRearCameraButton = findViewById(R.id.rear_camera); mFaceFrontCameraButton = findViewById(R.id.front_camera); mGrayCameraButton = findViewById(R.id.gray_camera); mImageButton = findViewById(R.id.edge_detection_btn); mFaceRearCameraButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, CameraActivity.class); intent.putExtra("mode", 0); startActivity(intent); } }); mFaceFrontCameraButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, CameraActivity.class); intent.putExtra("mode", 1); startActivity(intent); } }); mGrayCameraButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, CameraActivity.class); intent.putExtra("mode", 2); startActivity(intent); } }); mImageButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(MainActivity.this, ImageActivity.class); startActivity(intent); } }); } @Override public void onPause() { super.onPause(); } @Override public void onResume() { super.onResume(); } @Override protected void onDestroy() { super.onDestroy(); } // permission static final int PERMISSIONS_REQUEST_CODE = 1000; String[] PERMISSIONS = {"android.permission.CAMERA", "android.permission.READ_EXTERNAL_STORAGE"}; private boolean hasPermissions(String[] permissions) { int result; for (String perms : permissions) { result = ContextCompat.checkSelfPermission(this, perms); if (result == PackageManager.PERMISSION_DENIED) { return false; } } return true; } // 불필요 @Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case PERMISSIONS_REQUEST_CODE: if (grantResults.length > 0) { boolean isPermission = grantResults[0] == PackageManager.PERMISSION_GRANTED; if (!isPermission) { showDialogForPermission("실행을 위해 권한 허가가 필요합니다."); } } break; } } @TargetApi(Build.VERSION_CODES.M) private void showDialogForPermission(String msg) { AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("알림"); builder.setMessage(msg); builder.setCancelable(false); builder.setPositiveButton("예", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { requestPermissions(PERMISSIONS, PERMISSIONS_REQUEST_CODE); } }); builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() { public void onClick(DialogInterface arg0, int arg1) { finish(); } }); builder.create().show(); } }