Android module that takes a square photo using the native Android Camera APIs. The new Camera2 APIs from the L release is not used because support has to go back to SDK version 14 for my own requirement.
- Tap to focus
- Two fingers zooming
- Front & Back camera
- Flash mode (Saved when the user exits)
- Supports both portrait & landscape
- Runtime permission is supported for saving/viewing photos
Support from SDK version 14 onwards
jCenter:
repositories {
jcenter()
}
dependencies {
compile 'com.github.boxme:squarecamera:1.1.0'
}privatestaticfinalintREQUEST_CAMERA = 0;
// Check for camera permission in MashMallowpublicvoidrequestForCameraPermission(Viewview) {
finalStringpermission = Manifest.permission.CAMERA;
if (ContextCompat.checkSelfPermission(MainActivity.this, permission)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, permission)) {
// Show permission rationale
} else {
// Handle the result in Activity#onRequestPermissionResult(int, String[], int[])ActivityCompat.requestPermissions(YourActivity.this, newString[]{permission}, REQUEST_CAMERA_PERMISSION);
}
} else {
// Start CameraActivity
}
}
// Start CameraActivityIntentstartCustomCameraIntent = newIntent(this, CameraActivity.class);
startActivityForResult(startCustomCameraIntent, REQUEST_CAMERA);
// Receive Uri of saved square photo@OverrideprotectedvoidonActivityResult(intrequestCode, intresultCode, Intentdata) {
if (resultCode != RESULT_OK) return;
if (requestCode == REQUEST_CAMERA) {
UriphotoUri = data.getData();
}
super.onActivityResult(requestCode, resultCode, data);
}