Skip to content

Commit b6ee1de

Browse files
committed
Updated AR main activity template
1 parent 1d82db0 commit b6ee1de

File tree

1 file changed

+61
-5
lines changed

1 file changed

+61
-5
lines changed

mode/templates/ARActivity.java.tmpl

Lines changed: 61 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,27 @@
11
package @@package_name@@;
22

3+
import android.Manifest;
4+
import android.content.pm.PackageManager;
5+
import android.net.Uri;
36
import android.os.Bundle;
47
import android.content.Intent;
8+
import android.provider.Settings;
9+
import android.support.v4.app.ActivityCompat;
10+
import android.support.v4.content.ContextCompat;
511
import android.view.ViewGroup;
612
import android.widget.FrameLayout;
713
import android.support.v7.app.AppCompatActivity;
14+
import android.widget.Toast;
815

916
import processing.android.PFragment;
1017
import processing.android.CompatUtils;
1118
import processing.core.PApplet;
1219

1320
public class MainActivity extends AppCompatActivity {
21+
private static final int CAMERA_PERMISSION_CODE = 0;
22+
private static final String CAMERA_PERMISSION = Manifest.permission.CAMERA;
23+
private static final String CAMERA_PERMISSION_MESSAGE = "Camera permission is needed to use AR";
24+
1425
private PApplet sketch;
1526

1627
@Override
@@ -28,18 +39,63 @@ public class MainActivity extends AppCompatActivity {
2839
}
2940

3041
@Override
31-
public void onRequestPermissionsResult(int requestCode,
32-
String permissions[],
33-
int[] grantResults) {
42+
protected void onResume() {
43+
super.onResume();
44+
if (!hasCameraPermission()) requestCameraPermission();
45+
}
46+
47+
@Override
48+
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
49+
if (!hasCameraPermission()) {
50+
Toast.makeText(this, CAMERA_PERMISSION_MESSAGE, Toast.LENGTH_LONG).show();
51+
if (!shouldShowRequestPermissionRationale()) {
52+
launchPermissionSettings();
53+
}
54+
finish();
55+
}
3456
if (sketch != null) {
3557
sketch.onRequestPermissionsResult(requestCode, permissions, grantResults);
3658
}
37-
}
38-
59+
}
60+
3961
@Override
4062
public void onNewIntent(Intent intent) {
4163
if (sketch != null) {
4264
sketch.onNewIntent(intent);
65+
}
66+
}
67+
68+
@Override
69+
public void onActivityResult(int requestCode, int resultCode, Intent data) {
70+
if (sketch != null) {
71+
sketch.onActivityResult(requestCode, resultCode, data);
4372
}
73+
}
74+
75+
@Override
76+
public void onBackPressed() {
77+
if (sketch != null) {
78+
sketch.onBackPressed();
79+
}
80+
}
81+
82+
private boolean hasCameraPermission() {
83+
int res = ContextCompat.checkSelfPermission(this, CAMERA_PERMISSION);
84+
return res == PackageManager.PERMISSION_GRANTED;
85+
}
86+
87+
private void requestCameraPermission() {
88+
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, CAMERA_PERMISSION_CODE);
89+
}
90+
91+
private boolean shouldShowRequestPermissionRationale() {
92+
return ActivityCompat.shouldShowRequestPermissionRationale(this, CAMERA_PERMISSION);
4493
}
94+
95+
private void launchPermissionSettings() {
96+
Intent intent = new Intent();
97+
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
98+
intent.setData(Uri.fromParts("package", this.getPackageName(), null));
99+
this.startActivity(intent);
100+
}
45101
}

0 commit comments

Comments
 (0)