Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android Wear 在可穿戴設備中使用語音進行交互

Android Wear 在可穿戴設備中使用語音進行交互

編輯:關於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;
}
 


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved