編輯:關於Android編程
在通知中接收語音輸入
如果你手機中創建了一個包括某個行為的通知,如需要回復郵件之類的操作,通常會出現一個activity讓用戶進行輸入,但是再可穿戴設備中,沒有任何鍵盤讓用戶使用,因此用戶進行交互時使用的輸入方式可以使用RemoteInput。
當用戶使用語音回復或者可支持的其他輸入方式是,系統會將文本的答復綁定在你指定的通知行為的Intent中,然後將該Intent傳入手機的app。
定義語音輸入
為了創建一個可以接受語音輸入的行為,需要實例化RemoteInput.Builder並添加到通知的action中。它的構造方法接收一個字符串,這個字符串是系統使用語音輸入的key,這樣之後,就可以使用語音輸入與app進行關聯了。
例如,下面的代碼就是創建一個RemoteInput對象,並提供語音輸入功能的方法。
// Key for the string that's deliveredin the action's intent private staticfinalString EXTRA_VOICE_REPLY="extra_voice_reply"; String replyLabel = getResources().getString(R.string.reply_label); RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY) .setLabel(replyLabel) .build();
提供預定義的文本回復
除了支持語音輸入,你也能提供最多5個讓用戶快速恢復的文本,調用setChoices()傳遞給一個字符型數組,如下是定義的一個回復的資源數組
- Yes
- No
- Maybe
然後獲取該數組,並添加到RemoteInput中
public static final EXTRA_VOICE_REPLY = "extra_voice_reply"; ... String replyLabel = getResources().getString(R.string.reply_label); String[] replyChoices = getResources().getStringArray(R.array.reply_choices); RemoteInput remoteInput = new RemoteInput.Builder(EXTRA_VOICE_REPLY) .setLabel(replyLabel) .setChoices(replyChoices) .build();
將語音輸入作為通知行為
使用addRemoteInput()將RemoteInput對象綁定到一個action中,這樣你就能使用這個通知行為了,如下代碼所示:
// Create an intent for the reply action Intent replyIntent = new Intent(this, ReplyActivity.class); PendingIntent replyPendingIntent = PendingIntent.getActivity(this, 0, replyIntent, PendingIntent.FLAG_UPDATE_CURRENT); // Create the reply action and add the remote input NotificationCompat.Action action = new NotificationCompat.Action.Builder(R.drawable.ic_reply_icon, getString(R.string.label, replyPendingIntent)) .addRemoteInput(remoteInput) .build(); // Build the notification and add the action via WearableExtender Notification notification = new NotificationCompat.Builder(mContext) .setSmallIcon(R.drawable.ic_message) .setContentTitle(getString(R.string.title)) .setContentText(getString(R.string.content)) .extend(new WearableExtender().addAction(action)) .build(); // Issue the notification NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mContext); notificationManager.notify(notificationId, notification);
當通知彈出的時候,用戶向左滑動屏幕,就可以看到reply的行為按鈕。
接收語音輸入作為字符串
接收用戶說出的語音指令,可以調用getResultsFromIntent(),傳遞給Reply行為,這個方法返回一個Bundle,包含了文本的回復,然後可以查詢攜帶回復的Bundle。這裡不能用Intent.getExtras()。
下面的代碼展示了接收Intent與返回語音應答的方法,在上面的代碼中可以使用。
/** * Obtain the intent that started this activity by calling * Activity.getIntent() and pass it into this method to * get the associated voice input string. */ private CharSequence getMessageText(Intent intent) { Bundle remoteInput = RemoteInput.getResultsFromIntent(intent); if (remoteInput != null) { return remoteInput.getCharSequence(EXTRA_VOICE_REPLY); } } return null; }
我的主力博客:半畝方塘 以下內容系原創,轉載請務必注明地址 在 Android 手機上使用 Terminal IDE 遠程登錄你的 Mac 可以讓你隨時隨地遠程對你
簡介這裡主要介紹Android生成一個Json格式的字符串,客戶端通過網絡獲取服務器端生成的Json字符串進行解析,根據解析出來的Url去網絡獲取圖片並顯示在ListVi
上一篇《仿微信底部Tab欄》中粗略的講了下底部Tab欄的封裝,不少同學在實際運用中發現了一些問題,比如我demo中的title用了actionbar,所以如果新建的Act
先看看效果圖:停在中間自動翻頁序言:最近接到一個任務,做一個類似上面自動翻頁的功能。可以看到,這一屏中有三張圖片顯示出來了,有兩張沒有顯示完全,看到設計圖的時候第一反應是