在Anrroid4.0下一个新的功能就是直接语音输出汉字(虽然国产的山寨早就有了这个功能了~),即使不同的人在说话,也能很好的识别,并存在文本框中~如果你是一个开发人员,你也可以很方便的集集成这个语音输出~

为了更加简单的去实现,你如果下载一个库顺带修改下下输入法~Android2.2以后的版本中会一切都顺利的进行~在Android4.0中,用户语音输入时,使用的是标准的语音识别早期版本;不同的只是图解说明。实例图片如下:


他的布局很简单的时间,只包含一个按钮:一个麦克风。按麦克风、用户触发语音识别

下载库~然后添加到你的 IME APK.

下载链接:https://google-voice-typing-integration.googlecode.com/git/VoiceImeUtils/voiceimeutils.jar

先创建一个语音识别触发器

该库中包含了“VoiceRecognitionTrigger”帮助类。 创建一个InputMethodService # onCreate方法在你的输入法

public void onCreate() {
    super.onCreate();
    ...
    mVoiceRecognitionTrigger = new VoiceRecognitionTrigger(this);
}

 麦克风图标添加到你的输入法

  你需要修改你的UI输入法,并且添加一个麦克风图标,注册一个触发OnClickListener语音识别。麦克风图标会显示只有语音识别是安装;使用VoiceRecognitionTrigger#isInstalled().

public View onCreateInputView() {   LayoutInflater inflater = (LayoutInflater) getSystemService(       Service.LAYOUT_INFLATER_SERVICE);   mView = inflater.inflate(R.layout.ime, null);   ...   mButton = (ImageButton) mView.findViewById(R.id.mic_button);   if (mVoiceRecognitionTrigger.isInstalled()) {     mButton.setOnClickListener(new OnClickListener() {       @Override       public void onClick(View v) {         mVoiceRecognitionTrigger.startVoiceRecognition();       }     });     mButton.setVisibility(View.VISIBLE);   } else {     mButton.setVisibility(View.GONE);   }   return mView; }
如果你的输入法支持多种语言,你可以指定语言识别应该做一个参数的startVoiceRecognition()。

输入法启动通知的触发

当你的输入法启动,你需要通知触发,所以它可以插入到文本观任何未解决的识别结果。

@Override public void onStartInputView(EditorInfo info, boolean restarting) {   super.onStartInputView(info, restarting);   if (mVoiceRecognitionTrigger != null) {     mVoiceRecognitionTrigger.onStartInputView();   } }

修改你的Android显示

为了启动一个语音识别通过特定的API并显示。

<manifest ... >   <application ...>     ...     <service android:name="com.google.android.voiceime.ServiceHelper" />     <activity         android:name="com.google.android.voiceime.ActivityHelper"         android:theme="@android:style/Theme.Translucent.NoTitleBar"         android:excludeFromRecents="true"         android:windowSoftInputMode="stateAlwaysHidden"         android:finishOnTaskLaunch="true"         android:configChanges="keyboard|keyboardHidden|navigation                                |orientation"/>   </application> </manifest>
动态更新麦克风图标

这一步是可选的,但你要实现它,如果可能的话,因为它会提高用户体验。语音识别需要的网络访问,如果没有网络,您应该通知用户,输入法语音识别目前禁用。要做到这一点,你需要注册VoiceRecognitionTrigger.Listener。决定启用/禁用麦克风。

@Override public void onCreate() {   super.onCreate();   ...   mVoiceRecognitionTrigger = new VoiceRecognitionTrigger(this);   mVoiceRecognitionTrigger.register(new VoiceRecognitionTrigger.Listener() {     @Override     public void onVoiceImeEnabledStatusChange() {       updateVoiceImeStatus();     }   }); } ... @Override public void onDestroy() {   ...   if (mVoiceRecognitionTrigger != null) {     mVoiceRecognitionTrigger.unregister(this);   }   super.onDestroy(); } private void updateVoiceImeStatus() {   if (mVoiceRecognitionTrigger.isInstalled()) {     mButton.setVisibility(View.VISIBLE);     if (mVoiceRecognitionTrigger.isEnabled()) {       mButton.setEnabled(true);     } else {       mButton.setEnabled(false);     }   } else {     mButton.setVisibility(View.GONE);   }   mView.invalidate(); }
添加显示许可~
<manifest ... >   ...   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>   ... </manifest>
语音识别很容易让用户做更多的与他们的Android 设备交互。

评论被关闭。