Skip to content

Commit b187aa4

Browse files
committed
android10対応(Activity起動方法の修正)
1 parent 85e58ba commit b187aa4

21 files changed

Lines changed: 400 additions & 30 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ apply plugin: 'com.android.library'
33
def DEMO_ZIP_NAME = "demo.zip"
44

55
android {
6-
compileSdkVersion 28
6+
compileSdkVersion 29
77
buildToolsVersion '28.0.3'
88

99
def getVersionName = { ->
@@ -19,7 +19,7 @@ android {
1919

2020
defaultConfig {
2121
minSdkVersion 21
22-
targetSdkVersion 28
22+
targetSdkVersion 29
2323
versionName getVersionName()
2424

2525
buildConfigField "String", "PACKAGE_NAME", "\"org.deviceconnect.android.deviceplugin.host\""
@@ -77,7 +77,7 @@ dependencies {
7777
exclude module: 'animated-vector-drawable'
7878
exclude module: 'support-media-compat'
7979
}
80-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.7.2'
80+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.7.3'
8181
implementation project(':dconnect-demo-lib')
8282
implementation project(':libstreaming')
8383
implementation('com.serenegiant:common:2.12.5') {

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/mediaplayer/HostMediaPlayerManager.java

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.net.Uri;
2121
import android.os.Build;
2222
import android.os.Bundle;
23+
import android.os.Handler;
2324
import android.provider.MediaStore;
2425
import android.webkit.MimeTypeMap;
2526

@@ -30,6 +31,7 @@
3031
import org.deviceconnect.android.message.DevicePluginContext;
3132
import org.deviceconnect.android.message.MessageUtils;
3233
import org.deviceconnect.android.profile.MediaPlayerProfile;
34+
import org.deviceconnect.android.util.NotificationUtils;
3335
import org.deviceconnect.message.DConnectMessage;
3436

3537
import java.io.File;
@@ -157,12 +159,22 @@ public class HostMediaPlayerManager {
157159
*/
158160
private final DevicePluginContext mHostDevicePluginContext;
159161

162+
/** Notification Id */
163+
private final int NOTIFICATION_ID = 3539;
164+
165+
/** Notification Content */
166+
private final String NOTIFICATION_CONTENT = "Host Media Player Profileからの起動要求";
167+
168+
/** Intent Action */
169+
public static final String INTENT_ACTION_ACTIVITY_START = "org.deviceconnect.android.deviceplugin.host.mediaplayer.ACTIVTY_START";
170+
160171
public HostMediaPlayerManager(final DevicePluginContext pluginContext) {
161172
mHostDevicePluginContext = pluginContext;
162173

163174
// MediaPlayer (Video) IntentFilter.
164175
mIfMediaPlayerVideo = new IntentFilter();
165176
mIfMediaPlayerVideo.addAction(VideoConst.SEND_VIDEOPLAYER_TO_HOSTDP);
177+
mIfMediaPlayerVideo.addAction(INTENT_ACTION_ACTIVITY_START);
166178
}
167179

168180
private Context getContext() {
@@ -472,8 +484,13 @@ public int playMedia(final Intent response) {
472484
mIntent.setDataAndType(data, mMyCurrentFileMIMEType);
473485
mIntent.putExtra(VideoConst.EXTRA_NAME, VideoConst.EXTRA_VALUE_VIDEO_PLAYER_PLAY);
474486
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
475-
mHostDevicePluginContext.getContext().startActivity(mIntent);
476-
sendOnStatusChangeEvent("play");
487+
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
488+
mHostDevicePluginContext.getContext().startActivity(mIntent);
489+
sendOnStatusChangeEvent("play");
490+
} else {
491+
NotificationUtils.createNotificationChannel(getContext());
492+
NotificationUtils.notify(getContext(), NOTIFICATION_ID, 0, mIntent, NOTIFICATION_CONTENT);
493+
}
477494
}
478495

479496
if (response != null) {
@@ -609,6 +626,8 @@ public void onReceive(final Context context, final Intent intent) {
609626
getContext().unregisterReceiver(mMediaPlayerVideoBR);
610627
break;
611628
}
629+
} else if (intent.getAction().equals(INTENT_ACTION_ACTIVITY_START)) {
630+
sendOnStatusChangeEvent("play");
612631
}
613632
}
614633
};

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/mediaplayer/VideoPlayer.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import android.media.MediaPlayer.OnCompletionListener;
1717
import android.media.MediaPlayer.OnPreparedListener;
1818
import android.net.Uri;
19+
import android.os.Build;
1920
import android.os.Bundle;
2021
import android.view.View;
2122
import android.view.Window;
@@ -24,6 +25,7 @@
2425
import android.widget.VideoView;
2526

2627
import org.deviceconnect.android.deviceplugin.host.R;
28+
import org.deviceconnect.android.deviceplugin.host.profile.HostMediaPlayerProfile;
2729

2830
/**
2931
* Video Player.
@@ -62,6 +64,11 @@ public void onCreate(final Bundle savedInstanceState) {
6264
// 再生するVideoのURI
6365
Intent mIntent = this.getIntent();
6466
mUri = mIntent.getData();
67+
68+
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
69+
Intent intent = new Intent(HostMediaPlayerManager.INTENT_ACTION_ACTIVITY_START);
70+
sendBroadcast(intent);
71+
}
6572
}
6673

6774
@Override

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/profile/HostCanvasProfile.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,20 @@
1010
import android.app.ActivityManager;
1111
import android.app.Service;
1212
import android.content.Intent;
13+
import android.os.Build;
1314
import android.support.annotation.NonNull;
1415
import android.support.v4.content.LocalBroadcastManager;
1516
import android.util.Log;
1617

18+
import org.deviceconnect.android.deviceplugin.demo.DemoInstaller;
1719
import org.deviceconnect.android.deviceplugin.host.activity.CanvasProfileActivity;
1820
import org.deviceconnect.android.deviceplugin.host.canvas.CanvasDrawImageObject;
1921
import org.deviceconnect.android.message.MessageUtils;
2022
import org.deviceconnect.android.profile.CanvasProfile;
2123
import org.deviceconnect.android.profile.api.DConnectApi;
2224
import org.deviceconnect.android.profile.api.DeleteApi;
2325
import org.deviceconnect.android.profile.api.PostApi;
26+
import org.deviceconnect.android.util.NotificationUtils;
2427
import org.deviceconnect.message.DConnectMessage;
2528

2629
import java.io.File;
@@ -47,6 +50,12 @@ public class HostCanvasProfile extends CanvasProfile {
4750
/** Edit Image Thread. */
4851
private ExecutorService mImageService = Executors.newSingleThreadExecutor();
4952

53+
/** Notification Id */
54+
private final int NOTIFICATION_ID = 3517;
55+
56+
/** Notification Content */
57+
private final String NOTIFICATION_CONTENT = "Host Canvas Profileからの起動要求";
58+
5059
private final DConnectApi mDrawImageApi = new PostApi() {
5160

5261
@Override
@@ -167,7 +176,12 @@ private void drawImage(Intent response, String uri, CanvasDrawImageObject.Mode e
167176
intent.setClass(getContext(), CanvasProfileActivity.class);
168177
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
169178
drawObj.setValueToIntent(intent);
170-
getContext().startActivity(intent);
179+
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
180+
getContext().startActivity(intent);
181+
} else {
182+
NotificationUtils.createNotificationChannel(getContext());
183+
NotificationUtils.notify(getContext(), NOTIFICATION_ID, 0, intent, NOTIFICATION_CONTENT);
184+
}
171185
}
172186

173187
setResult(response, DConnectMessage.RESULT_OK);

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/profile/HostGeolocationProfile.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import android.location.Location;
1515
import android.location.LocationListener;
1616
import android.location.LocationManager;
17+
import android.os.Build;
1718
import android.os.Bundle;
1819
import android.os.Handler;
1920
import android.os.Looper;
@@ -32,6 +33,7 @@
3233
import org.deviceconnect.android.profile.api.DeleteApi;
3334
import org.deviceconnect.android.profile.api.GetApi;
3435
import org.deviceconnect.android.profile.api.PutApi;
36+
import org.deviceconnect.android.util.NotificationUtils;
3537
import org.deviceconnect.message.DConnectMessage;
3638
import org.deviceconnect.utils.RFC3339DateUtils;
3739

@@ -56,6 +58,12 @@ public class HostGeolocationProfile extends GeolocationProfile implements Locati
5658
/** 前回の位置情報を保持する. */
5759
private Bundle mLocationCache;
5860

61+
/** Notification Id */
62+
private final int NOTIFICATION_ID = 3533;
63+
64+
/** Notification Content */
65+
private final String NOTIFICATION_CONTENT = "Host Geolocation Profileからの起動要求";
66+
5967
/**
6068
* Constructor.
6169
*/
@@ -199,7 +207,12 @@ private LocationManager getLocationManager(final Intent response) {
199207
Bundle bundle = new Bundle();
200208
bundle.putParcelable("response", response);
201209
intent.putExtra("Intent", bundle);
202-
getContext().startActivity(intent);
210+
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
211+
getContext().startActivity(intent);
212+
} else {
213+
NotificationUtils.createNotificationChannel(getContext());
214+
NotificationUtils.notify(getContext(), NOTIFICATION_ID, 0, intent, NOTIFICATION_CONTENT);
215+
}
203216
}
204217
return mLocationManager;
205218
}

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/profile/HostKeyEventProfile.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.content.Context;
1313
import android.content.Intent;
1414
import android.content.IntentFilter;
15+
import android.os.Build;
1516
import android.os.Bundle;
1617
import android.support.v4.content.LocalBroadcastManager;
1718

@@ -25,6 +26,7 @@
2526
import org.deviceconnect.android.profile.api.DeleteApi;
2627
import org.deviceconnect.android.profile.api.GetApi;
2728
import org.deviceconnect.android.profile.api.PutApi;
29+
import org.deviceconnect.android.util.NotificationUtils;
2830
import org.deviceconnect.message.DConnectMessage;
2931
import org.deviceconnect.message.intent.message.IntentDConnectMessage;
3032

@@ -51,6 +53,12 @@ public class HostKeyEventProfile extends KeyEventProfile {
5153
public static final String ACTION_KEYEVENT =
5254
"org.deviceconnect.android.deviceplugin.host.keyevent.action.KEY_EVENT";
5355

56+
/** Notification Id */
57+
private final int NOTIFICATION_ID = 3529;
58+
59+
/** Notification Content */
60+
private final String NOTIFICATION_CONTENT = "Host Key Event Profileからの起動要求";
61+
5462
/**
5563
* KeyEventProfileActivityからのKeyEventを中継するBroadcast Receiver.
5664
*/
@@ -294,7 +302,12 @@ private boolean execKeyEventActivity(final String serviceId) {
294302
mIntent.setClass(getContext(), KeyEventProfileActivity.class);
295303
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
296304
mIntent.putExtra(DConnectMessage.EXTRA_SERVICE_ID, serviceId);
297-
this.getContext().startActivity(mIntent);
305+
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
306+
this.getContext().startActivity(mIntent);
307+
} else {
308+
NotificationUtils.createNotificationChannel(getContext());
309+
NotificationUtils.notify(getContext(), NOTIFICATION_ID, 0, mIntent, NOTIFICATION_CONTENT);
310+
}
298311
}
299312
return true;
300313
}

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/profile/HostTouchProfile.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import android.content.Context;
1313
import android.content.Intent;
1414
import android.content.IntentFilter;
15+
import android.os.Build;
1516
import android.os.Bundle;
1617
import android.support.v4.content.LocalBroadcastManager;
1718

@@ -25,6 +26,7 @@
2526
import org.deviceconnect.android.profile.api.DeleteApi;
2627
import org.deviceconnect.android.profile.api.GetApi;
2728
import org.deviceconnect.android.profile.api.PutApi;
29+
import org.deviceconnect.android.util.NotificationUtils;
2830
import org.deviceconnect.message.DConnectMessage;
2931
import org.deviceconnect.message.intent.message.IntentDConnectMessage;
3032

@@ -60,6 +62,12 @@ public class HostTouchProfile extends TouchProfile {
6062
public static final String ACTION_TOUCH =
6163
"org.deviceconnect.android.deviceplugin.host.touch.action.KEY_EVENT";
6264

65+
/** Notification Id */
66+
private final int NOTIFICATION_ID = 3527;
67+
68+
/** Notification Content */
69+
private final String NOTIFICATION_CONTENT = "Host Touch Profileからの起動要求";
70+
6371
/**
6472
* KeyEventProfileActivityからのKeyEventを中継するBroadcast Receiver.
6573
*/
@@ -581,7 +589,12 @@ private boolean execTouchProfileActivity(final String serviceId) {
581589
mIntent.setClass(getContext(), TouchProfileActivity.class);
582590
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
583591
mIntent.putExtra(DConnectMessage.EXTRA_SERVICE_ID, serviceId);
584-
this.getContext().startActivity(mIntent);
592+
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
593+
this.getContext().startActivity(mIntent);
594+
} else {
595+
NotificationUtils.createNotificationChannel(getContext());
596+
NotificationUtils.notify(getContext(), NOTIFICATION_ID, 0, mIntent, NOTIFICATION_CONTENT);
597+
}
585598
}
586599
return true;
587600
}

dConnectDevicePlugin/dConnectDevicePluginSDK/dconnect-device-plugin-sdk/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
apply plugin: 'com.android.library'
22

33
android {
4-
compileSdkVersion 28
4+
compileSdkVersion 29
55
buildToolsVersion '28.0.3'
66

77
defaultConfig {
88
minSdkVersion 14
9-
targetSdkVersion 28
9+
targetSdkVersion 29
1010
versionCode 1
11-
versionName '2.7.2'
11+
versionName '2.7.3'
1212
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
1313
}
1414

dConnectDevicePlugin/dConnectDevicePluginSDK/dconnect-device-plugin-sdk/src/main/java/org/deviceconnect/android/activity/PermissionRequestActivity.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package org.deviceconnect.android.activity;
22

33
import android.app.Activity;
4+
import android.app.NotificationManager;
45
import android.content.Context;
56
import android.content.Intent;
7+
import android.os.Build;
68
import android.os.Bundle;
79
import android.os.ResultReceiver;
810
import android.support.annotation.NonNull;
911

12+
import org.deviceconnect.android.util.NotificationUtils;
13+
1014
/**
1115
* An Activity with interfaces to make a request for permissions and return the
1216
* result.
@@ -20,6 +24,12 @@ public class PermissionRequestActivity extends Activity {
2024
private static final String EXTRA_CALLBACK = "EXTRA_CALLBACK";
2125
private static final int REQUEST_CODE = 123456789;
2226

27+
/** Notification Content */
28+
private static final String NOTIFICATION_CONTENT = "実行時権限の要求";
29+
30+
/** Notification Id */
31+
private static final int NOTIFICATION_ID = 3467;
32+
2333
@Override
2434
protected void onCreate(Bundle savedInstanceState) {
2535
super.onCreate(savedInstanceState);
@@ -46,6 +56,14 @@ protected void onCreate(Bundle savedInstanceState) {
4656
@Override
4757
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
4858
@NonNull int[] grantResults) {
59+
60+
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
61+
NotificationManager notificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
62+
if(notificationManager != null) {
63+
notificationManager.cancel(NOTIFICATION_ID);
64+
}
65+
}
66+
4967
Intent callingIntent = getIntent();
5068
if (callingIntent == null || callingIntent.getExtras() == null || !callingIntent.hasExtra(EXTRA_CALLBACK)) {
5169
finish();
@@ -76,6 +94,12 @@ public static void requestPermissions(@NonNull Context context, @NonNull String[
7694
// hand, does not cause that.
7795
callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP
7896
| Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS);
79-
context.startActivity(callIntent);
97+
98+
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
99+
context.startActivity(callIntent);
100+
} else {
101+
NotificationUtils.createNotificationChannel(context);
102+
NotificationUtils.notify(context, NOTIFICATION_ID, REQUEST_CODE, callIntent, NOTIFICATION_CONTENT);
103+
}
80104
}
81105
}

0 commit comments

Comments
 (0)