| <?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> |
| |
| <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>PUBLISHED</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> |