-
Notifications
You must be signed in to change notification settings - Fork 51
Expand file tree
/
Copy pathCameraDeepArPlugin.java
More file actions
108 lines (80 loc) · 3.38 KB
/
CameraDeepArPlugin.java
File metadata and controls
108 lines (80 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package com.camera_deep_ar;
import android.Manifest;
import android.app.Activity;
import androidx.annotation.NonNull;
import com.karumi.dexter.Dexter;
import com.karumi.dexter.MultiplePermissionsReport;
import com.karumi.dexter.PermissionToken;
import com.karumi.dexter.listener.PermissionRequest;
import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
import java.util.List;
import io.flutter.embedding.engine.plugins.FlutterPlugin;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.plugins.activity.ActivityAware;
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.plugin.common.PluginRegistry;
import io.flutter.plugin.common.PluginRegistry.Registrar;
import io.flutter.plugins.GeneratedPluginRegistrant;
//import ai.deepar.ar.DeepAR;
/** CameraDeepArPlugin */
public class CameraDeepArPlugin implements FlutterPlugin ,ActivityAware{
private PluginRegistry.Registrar mPluginRegistrar;
private FlutterPluginBinding pluginBinding;
public CameraDeepArPlugin() {}
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), CHANNEL)
.setMethodCallHandler(
(call, result) -> {
// Your existing code
}
);
}
@Override
public void onAttachedToActivity(@NonNull ActivityPluginBinding binding) {
initPlugin(binding,pluginBinding);
}
@Override
public void onDetachedFromActivityForConfigChanges() {
}
@Override
public void onReattachedToActivityForConfigChanges(@NonNull ActivityPluginBinding binding) {
onAttachedToActivity(binding);
}
@Override
public void onDetachedFromActivity() {
}
private void checkForPermission(ActivityPluginBinding binding,final MethodChannel.Result result) {
Dexter.withContext(binding.getActivity())
.withPermissions(Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE)
.withListener(new MultiplePermissionsListener() {
@Override
public void onPermissionsChecked(MultiplePermissionsReport report) {
result.success(report.areAllPermissionsGranted());
}
@Override
public void onPermissionRationaleShouldBeShown(List<PermissionRequest> list, PermissionToken token) {
token.continuePermissionRequest();
}
})
.check();
}
@Override
public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) {
pluginBinding = binding;
}
@Override
public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) {
pluginBinding = null;
}
private void initPlugin(ActivityPluginBinding activityPluginBinding, FlutterPluginBinding pluginBinding) {
final CameraDeepArViewFactory factory = new CameraDeepArViewFactory(
activityPluginBinding,pluginBinding);
pluginBinding
.getPlatformViewRegistry()
.registerViewFactory(
"plugins.flutter.io/deep_ar_camera", factory);
}
}