Skip to content

Commit eadf01a

Browse files
Merge pull request #655 from TakayukiHoshi1984/modify_notification_close
DeviceConnectが出す通知に対する挙動修正
2 parents 23e7452 + 8b1f583 commit eadf01a

28 files changed

Lines changed: 103 additions & 34 deletions

File tree

dConnectDevicePlugin/dConnectDeviceAndroidWear/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ repositories {
88

99
dependencies {
1010
implementation fileTree(include: '*.jar', dir: 'libs')
11-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
11+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
1212
implementation 'androidx.multidex:multidex:2.0.1'
1313
implementation 'com.google.android.gms:play-services-wearable:17.0.0'
1414

dConnectDevicePlugin/dConnectDeviceChromeCast/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ repositories {
6363

6464
dependencies {
6565
implementation fileTree(include: '*.jar', dir: 'libs')
66-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
66+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
6767
implementation 'com.google.android.gms:play-services-cast-framework:17.1.0'
6868
}
6969

dConnectDevicePlugin/dConnectDeviceFaBo/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ repositories {
5656

5757
dependencies {
5858
implementation fileTree(include: '*.jar', dir: 'libs')
59-
api 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
59+
api 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
6060
testImplementation 'junit:junit:4.12'
6161
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
6262
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

dConnectDevicePlugin/dConnectDeviceHOGP/plugin/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
22

33
dependencies {
44
implementation fileTree(include: '*.jar', dir: 'libs')
5-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
5+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
66
}
77

88
repositories {

dConnectDevicePlugin/dConnectDeviceHeartRate/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ repositories {
6464

6565
dependencies {
6666
implementation fileTree(include: '*.jar', dir: 'libs')
67-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
67+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
6868
testImplementation 'junit:junit:4.12'
6969
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
7070
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

dConnectDevicePlugin/dConnectDeviceHitoe/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@ repositories {
6363

6464
dependencies {
6565
implementation fileTree(include: '*.jar', dir: 'libs')
66-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
66+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
6767
}

dConnectDevicePlugin/dConnectDeviceHost/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ repositories {
7272

7373
dependencies {
7474
implementation fileTree(include: '*.jar', dir: 'libs')
75-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.2'
75+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
7676
implementation project(':dconnect-demo-lib')
7777
implementation project(':libstreaming')
7878
implementation 'com.serenegiant:common:2.12.5'

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

Lines changed: 42 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ public class HostNotificationProfile extends NotificationProfile {
5555
/**
5656
* Notification Flag.
5757
*/
58-
private static final String ACTON_NOTIFICATION = "org.deviceconnect.android.intent.action.notifiy";
58+
private static final String ACTON_CLICK_NOTIFICATION = "org.deviceconnect.android.intent.action.click.notifiy";
59+
private static final String ACTON_DELETE_NOTIFICATION = "org.deviceconnect.android.intent.action.delete.notifiy";
5960

6061
/** ランダムシード. */
6162
private final Random mRandom = new Random();
@@ -71,8 +72,10 @@ public String getAttribute() {
7172
public boolean onRequest(final Intent request, final Intent response) {
7273
if (mNotificationStatusReceiver == null) {
7374
mNotificationStatusReceiver = new NotificationStatusReceiver();
74-
getContext().getApplicationContext().registerReceiver(mNotificationStatusReceiver,
75-
new IntentFilter(ACTON_NOTIFICATION));
75+
IntentFilter filter = new IntentFilter();
76+
filter.addAction(ACTON_CLICK_NOTIFICATION);
77+
filter.addAction(ACTON_DELETE_NOTIFICATION);
78+
getContext().getApplicationContext().registerReceiver(mNotificationStatusReceiver, filter);
7679
}
7780
String serviceId = getServiceID(request);
7881
NotificationType type = getType(request);
@@ -120,12 +123,20 @@ public boolean onRequest(final Intent request, final Intent response) {
120123
setResult(response, IntentDConnectMessage.RESULT_OK);
121124
} else {
122125
// Build intent for notification content
123-
Intent notifyIntent = new Intent(ACTON_NOTIFICATION);
124-
notifyIntent.putExtra("notificationId", notifyId);
125-
notifyIntent.putExtra("serviceId", serviceId);
126+
Intent notifyClickIntent = new Intent(ACTON_CLICK_NOTIFICATION);
127+
notifyClickIntent.putExtra("notificationId", notifyId);
128+
notifyClickIntent.putExtra("serviceId", serviceId);
129+
130+
PendingIntent pendingClickIntent = PendingIntent.getBroadcast(getContext(),
131+
notifyId, notifyClickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
132+
133+
Intent notifyDeleteIntent = new Intent(ACTON_DELETE_NOTIFICATION);
134+
notifyDeleteIntent.putExtra("notificationId", notifyId);
135+
notifyDeleteIntent.putExtra("serviceId", serviceId);
136+
137+
PendingIntent pendingDeleteIntent = PendingIntent.getBroadcast(getContext(),
138+
notifyId, notifyDeleteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
126139

127-
PendingIntent mPendingIntent = PendingIntent.getBroadcast(getContext(),
128-
notifyId, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
129140

130141
Notification notification;
131142
// Get an instance of the NotificationManager service
@@ -137,15 +148,17 @@ public boolean onRequest(final Intent request, final Intent response) {
137148
.setSmallIcon(iconType)
138149
.setContentTitle("" + title)
139150
.setContentText(encodeBody)
140-
.setContentIntent(mPendingIntent);
151+
.setContentIntent(pendingClickIntent)
152+
.setDeleteIntent(pendingDeleteIntent);
141153
notification = notificationBuilder.build();
142154
} else {
143155
Notification.Builder notificationBuilder =
144156
new Notification.Builder(getContext())
145157
.setSmallIcon(Icon.createWithResource(getContext(), iconType))
146158
.setContentTitle("" + title)
147159
.setContentText(encodeBody)
148-
.setContentIntent(mPendingIntent);
160+
.setContentIntent(pendingClickIntent)
161+
.setDeleteIntent(pendingDeleteIntent);
149162
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
150163
String channelId = getContext().getResources().getString(R.string.host_notification_channel_id);
151164
NotificationChannel channel = new NotificationChannel(
@@ -235,7 +248,7 @@ public String getAttribute() {
235248
@Override
236249
public boolean onRequest(final Intent request, final Intent response) {
237250
mNotificationStatusReceiver = new NotificationStatusReceiver();
238-
IntentFilter intentFilter = new IntentFilter(ACTON_NOTIFICATION);
251+
IntentFilter intentFilter = new IntentFilter(ACTON_CLICK_NOTIFICATION);
239252
getContext().registerReceiver(mNotificationStatusReceiver, intentFilter);
240253

241254
// イベントの登録
@@ -259,6 +272,10 @@ public String getAttribute() {
259272

260273
@Override
261274
public boolean onRequest(final Intent request, final Intent response) {
275+
mNotificationStatusReceiver = new NotificationStatusReceiver();
276+
IntentFilter intentFilter = new IntentFilter(ACTON_DELETE_NOTIFICATION);
277+
getContext().registerReceiver(mNotificationStatusReceiver, intentFilter);
278+
262279
// イベントの登録
263280
EventError error = EventManager.INSTANCE.addEvent(request);
264281

@@ -412,6 +429,19 @@ private class NotificationStatusReceiver extends BroadcastReceiver {
412429

413430
@Override
414431
public void onReceive(final Context context, final Intent intent) {
432+
String profile;
433+
if (intent.getAction() == null) {
434+
return;
435+
}
436+
// Intent#getAction()によってイベントプロファイル名を決める。
437+
// 他のアクション名であれば処理をしない。
438+
if (intent.getAction().equals(ACTON_CLICK_NOTIFICATION)) {
439+
profile = HostNotificationProfile.ATTRIBUTE_ON_CLICK;
440+
} else if (intent.getAction().equals(ACTON_DELETE_NOTIFICATION)) {
441+
profile = HostNotificationProfile.ATTRIBUTE_ON_CLOSE;
442+
} else {
443+
return;
444+
}
415445
// クリティカルセクション(バッテリーステータスの状態更新etc)にmutexロックを掛ける。
416446
synchronized (this) {
417447

@@ -422,7 +452,7 @@ public void onReceive(final Context context, final Intent intent) {
422452
mServiceId,
423453
HostNotificationProfile.PROFILE_NAME,
424454
null,
425-
HostNotificationProfile.ATTRIBUTE_ON_CLICK);
455+
profile);
426456

427457
for (int i = 0; i < events.size(); i++) {
428458
Event event = events.get(i);

dConnectDevicePlugin/dConnectDeviceHue/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,6 @@ repositories {
7474

7575
dependencies {
7676
implementation fileTree(include: '*.jar', dir: 'libs')
77-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
77+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
7878
compileOnly 'com.google.android.things:androidthings:1.0'
7979
}

dConnectDevicePlugin/dConnectDeviceIRKit/app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,5 +64,5 @@ repositories {
6464

6565
dependencies {
6666
implementation fileTree(include: '*.jar', dir: 'libs')
67-
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.1'
67+
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.8.3'
6868
}

0 commit comments

Comments
 (0)