package csu.xiaoya.robotApp.baidu_libs.uidialog;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.StateListDrawable;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.speech.SpeechRecognizer;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.TextUtils;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import java.util.MissingResourceException;
import java.util.Random;
import java.util.ResourceBundle;
import csu.xiaoya.robotApp.R;
/**
* 语音识别对话框
*
* @author yangliang02
*/
public class BaiduASRDigitalDialog extends BaiduASRDialog {
private static final String TAG = "BSDigitalDialog";
// 国际化标识定义Begin
private static final String KEY_TIPS_ERROR_SILENT = "tips.error.silent";
private static final String KEY_TIPS_ERROR_DECODER = "tips.error.decoder";
private static final String KEY_TIPS_ERROR_SPEECH_TOO_SHORT = "tips.error.speech_too_short";
private static final String KEY_TIPS_ERROR_SPEECH_TOO_LONG = "tips.error.speech_too_long";
private static final String KEY_TIPS_ERROR_NETWORK = "tips.error.network";
private static final String KEY_TIPS_ERROR_NETWORK_UNUSABLE = "tips.error.network_unusable";
private static final String KEY_TIPS_ERROR_INTERNAL = "tips.error.internal";
private static final String KEY_TIPS_STATE_READY = "tips.state.ready";
private static final String KEY_TIPS_STATE_WAIT = "tips.state.wait";
private static final String KEY_TIPS_STATE_INITIALIZING = "tips.state.initializing";
private static final String KEY_TIPS_STATE_LISTENING = "tips.state.listening";
private static final String KEY_TIPS_STATE_RECOGNIZING = "tips.state.recognizing";
private static final String KEY_TIPS_COPYRIGHT = "tips.copyright";
private static final String KEY_TIPS_WAITNET = "tips.wait.net";
private static final String KEY_BTN_DONE = "btn.done";
private static final String KEY_BTN_CANCEL = "btn.cancel";
private static final String KEY_BTN_RETRY = "btn.retry";
private static final String KEY_TIPS_HELP_TITLE = "tips.help.title";
private static final String KEY_BTN_START = "btn.start";
private static final String KEY_BTN_HELP = "btn.help";
private static final String KEY_TIPS_PREFIX = "tips.suggestion.prefix";
private static final int ERROR_NETWORK_UNUSABLE = 0x90000;
private int mErrorCode;
// 国际化标识定义end
// TOTO 更新最终地址
private static final String mUrl = "http://developer.baidu.com/static/community/servers/voice/sdk.html";
private CharSequence mErrorRes = "";
private View mContentRoot = null;
private View mMainLayout;
private RelativeLayout cancle;
private View mErrorLayout;
private TextView mTipsTextView;
private TextView mWaitNetTextView;
private TextView mCompleteTextView;
private TextView mCancelTextView;
private TextView mRetryTextView;
private SDKAnimationView mVoiceWaveView;
private TextView mErrorTipsTextView;
// private TextView mLogoText1;
// private TextView mLogoText2;
private ImageButton mCancelBtn;
private ImageButton mHelpBtn;
private TextView mTitle;
private View mHelpView;
private TipsAdapter mTipsAdapter;
/**
* 动效下面的提示,3S不说话出现,文字在列表中随机出。出现后隐藏版权声明
*/
private TextView mSuggestionTips;
/**
* 静音异常时的提示语
*/
private TextView mSuggestionTips2;
private View mRecognizingView;
/**
* 连续上屏控件
*/
private EditText mInputEdit;
/**
* 识别中的进度条
*
* @author zhaopengfei04
*/
private static final int BAR_ONEND = 0;
private static final int BAR_ONFINISH = 1;
private SDKProgressBar mSDKProgressBar;
private int step = 0;
// 3秒不出识别结果,显示网络不稳定,15秒转到重试界面
private int delayTime = 0;
// 当前活跃的引擎类型
private volatile int mEngineType = 0;
Message mMessage = Message.obtain();
private Drawable mBg;
/**
* “说完了”按钮背景
*/
private StateListDrawable mButtonBg = new StateListDrawable();
/**
* 左侧按钮背景
*/
private StateListDrawable mLeftButtonBg = new StateListDrawable();
/**
* 右侧按钮背景
*/
private StateListDrawable mRightButtonBg = new StateListDrawable();
/**
* 帮助按钮
*/
private StateListDrawable mHelpButtonBg = new StateListDrawable();
/**
* 按钮文字颜色
*/
private ColorStateList mButtonColor;
/**
* 按钮文字颜色反色
*/
private ColorStateList mButtonReverseColor;
/**
* 底部版本声明字体颜色
*/
private int mCopyRightColor = 0;
/**
* 状态提示字体 颜色
*/
private int mStateTipsColor = 0;
/**
* 错误提示字体颜色
*/
private int mErrorTipsColor = 0;
private int mTheme = 0;
// 识别启动后间隔多长时间不说话出现提示,单位毫秒
private static final long SHOW_SUGGESTION_INTERVAL = 3000;
public static final int THEME_BLUE_LIGHTBG = BaiduASRDialogTheme.THEME_BLUE_LIGHTBG;
public static final int THEME_BLUE_DEEPBG = BaiduASRDialogTheme.THEME_BLUE_DEEPBG;
public static final int THEME_RED_LIGHTBG = BaiduASRDialogTheme.THEME_RED_LIGHTBG;
public static final int THEME_RED_DEEPBG = BaiduASRDialogTheme.THEME_RED_DEEPBG;
public static final int THEME_GREEN_LIGHTBG = BaiduASRDialogTheme.THEME_GREEN_LIGHTBG;
public static final int THEME_GREEN_DEEPBG = BaiduASRDialogTheme.THEME_GREEN_DEEPBG;
public static final int THEME_ORANGE_LIGHTBG = BaiduASRDialogTheme.THEME_ORANGE_LIGHTBG;
public static final int THEME_ORANGE_DEEPBG = BaiduASRDialogTheme.THEME_ORANGE_DEEPBG;
protected static final int ERROR_NONE = 0;
/**
* 国际化文本资源
*/
private ResourceBundle mLableRes;
/**
* 对话框主题,取值参考 {@link BaiduASRDialogTheme#THEME_BLUE_DEEPBG}等
*/
public static final String PARAM_DIALOG_THEME = "BaiduASRDigitalDialog_theme";
/**
* 对话框启动后展示引导提示,不启动识别
*/
@Deprecated
public static final String PARAM_SHOW_TIPS_ON_START = "BaiduASRDigitalDialog_showTips";
/**
* 引擎启动后3秒没检测到语音,在动效下方随机出现一条提示语。在配置了提示语列表后,默认开启。
*/
@Deprecated
public static final String PARAM_SHOW_TIP = "BaiduASRDigitalDialog_showTip";
/**
* 未检测到语音异常时,将“取消”按钮替换成帮助按钮。在配置了提示语列表后,默认开启。
*/
@Deprecated
public static final String PARAM_SHOW_HELP_ON
android蓝牙封装代码


在Android平台上,蓝牙技术是一种广泛使用的短距离无线通信方式,常用于设备间的文件传输、数据交换和物联网(IoT)应用。"android蓝牙封装代码"指的是开发者为了简化蓝牙功能的集成,将蓝牙相关的API调用、操作流程和异常处理封装到一个自定义库或模块中,以便在多个项目中复用。这样的封装可以提高开发效率,减少错误,并提供统一的接口给其他开发者使用。 Android系统提供了BluetoothAdapter类来管理蓝牙连接,通过BluetoothGatt类进行低功耗蓝牙(Bluetooth Low Energy, BLE)的交互。在封装过程中,通常会包括以下关键知识点: 1. **蓝牙状态检测与开启**:我们需要检查设备是否支持蓝牙以及当前蓝牙的状态,然后根据需要开启蓝牙。这涉及到BluetoothAdapter的`isEnabled()`、`enable()`和`disable()`方法。 2. **发现设备**:通过`BluetoothAdapter.startDiscovery()`方法可以开始搜索周围的蓝牙设备,同时需要处理BroadcastReceiver监听蓝牙发现事件,获取到设备列表。 3. **配对与连接**:找到目标设备后,使用`BluetoothDevice.createBond()`进行配对,然后调用`BluetoothDevice.connectGatt(context, autoConnect, callback)`建立连接。这里的`autoConnect`参数决定是否在设备不在范围时自动重连,`callback`是BluetoothGattCallback对象,包含连接状态变化、服务发现、读写操作等回调。 4. **BLE服务与特征值**:对于BLE设备,需要发现其提供的服务(`BluetoothGattService`)和特征值(`BluetoothGattCharacteristic`),这涉及到`BluetoothGatt.discoverServices()`方法。服务和特征值是数据交互的基础,每个特征值都可以被读取、写入或者订阅通知。 5. **读写操作**:`BluetoothGattCharacteristic`提供了`readValue()`和`writeValue()`方法,用于读取和写入数据。在写入前,可能需要设置写入模式,如`setWriteType()`。 6. **通知与响应**:如果特征值支持通知,可以调用`BluetoothGatt.setCharacteristicNotification(characteristic, enabled)`开启,然后通过`BluetoothGattDescriptor`的`writeDescriptor()`方法写入特定的值来配置通知。 7. **断开连接与清理资源**:完成蓝牙交互后,需调用`BluetoothGatt.disconnect()`和`BluetoothGatt.close()`来释放资源并断开连接。 8. **异常处理**:在整个蓝牙操作流程中,需要捕获并处理可能出现的异常,例如`IOException`、`NullPointerException`等,确保程序的健壮性。 封装蓝牙代码时,通常会设计一个BluetoothManager类,包含上述所有操作,并提供简单的API供其他组件调用,如`connectDevice()`,`disconnect()`,`readCharacteristic()`,`writeCharacteristic()`等。此外,为了提高用户体验,还可以添加进度提示、错误提示等功能。 在实际项目中,"baidu_libs"可能是一个包含了百度提供的蓝牙相关库,这些库可能已经进行了深度优化和封装,为开发者提供更便捷的蓝牙功能。使用这类库,开发者可以更专注于业务逻辑,而不是底层蓝牙通信细节。
































































































- 1

- #完美解决问题
- #运行顺畅
- #内容详尽
- #全网独家
- #注释完整


- 粉丝: 1w+
- 资源: 36
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- stm32cubeclt mac版本
- 基于PLC的换热站自动控制系统的设计与实现:组态画面、梯形图程序及接线图详解,基于PLC的换热站自动控制系统的设计与实现:组态画面、梯形图程序及接线图详解,基于PLC的热站自动控制系统设计热站组态热站
- c&c++逻辑思维训练题.rar
- 数论中的哥德巴赫强猜想简略证明过程
- Pycharm2025社区版安装教程
- Linux中用户管理相关常用命令
- properties和yml文件对比合并
- 基于混沌麻雀搜索算法的无人机航迹规划方法:CSSA策略实现与性能分析,基于混沌麻雀搜索算法的无人机航迹规划方法:CSSA策略实现与性能分析,麻雀搜索算法(SSA)文章复现:基于混沌麻雀搜索算法的无人
- Word转Latex-中文版latex
- sshpass-1.06-1-amd64.deb
- 掌握串口通讯,解锁电力仪表及信号采集技术-深入剖析易语言源码及其在工业控制中的应用,易语言串口通讯源码详解:掌握RS485通讯技术,深入理解MODBUS协议与CRC16校验算法,轻松控制电力仪表与信
- 網球比賽訓練數據youtube
- tcpdump-4.9.3-3.ky10.x86-64.rpm
- 工具变量-城市基尼系数(1992-2023年).xlsx
- arcgis教程系列:昆明市区位图(录屏+成图+工程+数据)
- 801617774366427HALParking.zip


