You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
127 lines
4.8 KiB
127 lines
4.8 KiB
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
Copyright 2013 The Android Open Source Project
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
|
|
|
|
<sample>
|
|
<name>ElizaChat</name>
|
|
<group>Wearable</group>
|
|
<package>com.example.android.wearable.elizachat</package>
|
|
|
|
<minSdk>18</minSdk>
|
|
<targetSdkVersion>23</targetSdkVersion>
|
|
|
|
<strings>
|
|
<intro>
|
|
<![CDATA[
|
|
This sample is a phone application that provides a chat experience in which users can respond to
|
|
messages with a quick voice response. New messages create a notification with a "Reply" action.
|
|
The notification is bridged from phone to wearable, and selecting the "Reply" action on the
|
|
wearable opens the voice transcription UI allowing the user to speak a response.
|
|
]]>
|
|
</intro>
|
|
</strings>
|
|
|
|
<template src="base"/>
|
|
|
|
<metadata>
|
|
<status>DEPRECATED</status>
|
|
<categories>Wearable</categories>
|
|
<technologies>Android</technologies>
|
|
<languages>Java</languages>
|
|
<solutions>Mobile</solutions>
|
|
<level>INTERMEDIATE</level>
|
|
<icon>screenshots/wearable_eliza_notification.png</icon>
|
|
<screenshots>
|
|
<img>screenshots/companion_eliza_chat_response.png</img>
|
|
<img>screenshots/companion_eliza_chat.png</img>
|
|
<img>screenshots/wearable_eliza_notification.png</img>
|
|
<img>screenshots/wearable_voice_reply.png</img>
|
|
</screenshots>
|
|
<api_refs>
|
|
<android>android.support.v4.app.NotificationCompat.WearableExtender</android>
|
|
</api_refs>
|
|
|
|
<description>
|
|
<![CDATA[
|
|
A basic sample showing how to add extensions to notifications on wearable using
|
|
[NotificationCompat.WearableExtender][1] API by providing a chat experience.
|
|
]]>
|
|
</description>
|
|
|
|
<intro>
|
|
<![CDATA[
|
|
[NotificationCompat.WearableExtender][1] API offers you a functionality to
|
|
add wearable extensions to notifications like [Add the Voice Input as a Notification Action][2].
|
|
|
|
This example also adds the wearable notifications as a voice input by the following code:
|
|
|
|
```java
|
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
|
|
.setContentTitle(getString(R.string.eliza))
|
|
.setContentText(mLastResponse)
|
|
.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.bg_eliza))
|
|
.setSmallIcon(R.drawable.bg_eliza)
|
|
.setPriority(NotificationCompat.PRIORITY_MIN);
|
|
|
|
Intent intent = new Intent(ACTION_RESPONSE);
|
|
PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent,
|
|
PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_CANCEL_CURRENT);
|
|
Notification notification = builder
|
|
.extend(new NotificationCompat.WearableExtender()
|
|
.addAction(new NotificationCompat.Action.Builder(
|
|
R.drawable.ic_full_reply, getString(R.string.reply), pendingIntent)
|
|
.addRemoteInput(new RemoteInput.Builder(EXTRA_REPLY)
|
|
.setLabel(getString(R.string.reply))
|
|
.build())
|
|
.build()))
|
|
.build();
|
|
NotificationManagerCompat.from(this).notify(0, notification);
|
|
```
|
|
|
|
When you issue this notification, users can swipe to the left to see the "Reply" action button.
|
|
|
|
When you receive the response, you can do it by the following code:
|
|
|
|
```java
|
|
@Override
|
|
public int onStartCommand(Intent intent, int flags, int startId) {
|
|
if (null == intent || null == intent.getAction()) {
|
|
return Service.START_STICKY;
|
|
}
|
|
String action = intent.getAction();
|
|
if (action.equals(ACTION_RESPONSE)) {
|
|
Bundle remoteInputResults = RemoteInput.getResultsFromIntent(intent);
|
|
CharSequence replyMessage = "";
|
|
if (remoteInputResults != null) {
|
|
replyMessage = remoteInputResults.getCharSequence(EXTRA_REPLY);
|
|
}
|
|
processIncoming(replyMessage.toString());
|
|
} else if (action.equals(MainActivity.ACTION_GET_CONVERSATION)) {
|
|
broadcastMessage(mCompleteConversation.toString());
|
|
}
|
|
return Service.START_STICKY;
|
|
}
|
|
```
|
|
|
|
[1]: https://developer.android.com/reference/android/support/v4/app/NotificationCompat.WearableExtender.html
|
|
[2]: https://developer.android.com/training/wearables/notifications/voice-input.html#AddAction
|
|
]]>
|
|
</intro>
|
|
</metadata>
|
|
</sample>
|