Android之Bluetooth(蓝牙)编程实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
// 布局控件 private TextView mTitle; private EditText mInputEditText; private EditText mOutEditText; private EditText mOutEditText2; private Button mSendButton; private CheckBox HEXCheckBox; private Button breakButton; private CheckBox checkBox_sixteen; /*private ImageView ImageLogoView;*/
//HEXCheckBox = (CheckBox) findViewById(R.id.radioMale); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/ breakButton = (Button) findViewById(R.id.button_break); // 得到当地的蓝牙适配器 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/ // 初始化 CheckBox //checkBox_sixteen = (CheckBox) findViewById(R.id.checkBox_sixteen); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/
public class BluetoothChat extends Activity { // 调试 private static final String TAG = "BluetoothChat"; private static boolean D = true; private static final String info = "junge"; // 类型的消息发送从 bluetoothchatservice 处理程序 public static final int MESSAGE_STATE_CHANGE = 1; public static final int MESSAGE_READ = 2; public static final int MESSAGE_WRITE = 3; public static final int MESSAGE_DEVICE_NAME = 4; public static final int MESSAGE_TOAST = 5; public static final String BluetoothData = "fullscreen"; public String filename = ""; // 用来保存存储的文件名 private String newCode = ""; private String newCode2 = ""; // 键名字从收到的 bluetoothchatservice 处理程序 public static final String DEVICE_NAME = "device_name"; public static final String TOAST = "toast"; // 独特的是这个应用程序
以发现其他的蓝牙设备,查找一些匹配的设备,用 MAC 地址来实例化一个 BluetoothDevice。 创建一个 BluetoothServerSocket 来监听其他设备,进而和它们进行通信。
BluetoothDevice: 表示远程的蓝牙设备。用它通过 BluetoothSocket 来请求与远程的设备进行连接。后者 查询设备的基本信息,例如名称,地址,类或者结合的状态。 BluetoothSocket:
//第一次输入加入-->变量 private int sum =1;
// 名社民党记录当创建服务器套接字 String mmsg = ""; String mmsg2 = "";
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
实现效果图如下:(1)启动时请求打开蓝牙
(2)搜索设备 (3)链接一个设备
(4)下面即可进行数据传输 具体实现代码如下: (1)BluetoothChat.class package com.example.BluetoothChat;
import java.io.UnsupportedEncodingException;
//getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,yout.custom_title); mInputEditText = (EditText) findViewById(R.id.editText1); mInputEditText.setGravity(Gravity.TOP); mInputEditText.setSelection(mInputEditText.getText().length(), mInputEditText.getText().length()); mInputEditText.clearFocus(); mInputEditText.setFocusable(false); // 设置文本的标题 mTitle = (TextView) findViewById(R.id.title_left_text); //mTitle.setText(R.string.app_name); mTitle = (TextView) findViewById(R.id.title_right_text); // 初始化 Radiobutton]
为了使用蓝牙,你必须在你的应用程序中声明权限。 <manifest ... >
<uses-permission android:name="android.permission.BLUETOOTH" /> ... </manifest> 两种权限:BLUETOOTH 和 BLUETOOTH ADMIN. 当使用 BLUETOOTH ADMIN 时,一定要声明 BLUETOOTH。 工程目录如下:
import java.util.UUID;
import comroid.app.Activity; import android.app.AlertDialog; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.CheckBox;
/*****************************************************************/ /*****************************************************************/
/*****************************************************************/
表示一个 Bluetooth socket 接口(与 TCP socket 相似)。它是一个连接点,运行设备 通过 InputStream 和 OutputStream 的形式来交换数据。
BluetoothServiceSocket: 表示一个打开服务 socket,用来监听收到的请求(与 TCP server socket 相似)。为了 连接设备,一个设备必须打开服务 socket。当一个远程的设备请求连接的时候,当连接被 接收的时候,BluetoothServiceSocket 返回一个 BluetoothSocket。 BluetoothClass: 描述蓝牙设备的一般特征和性能。这是个只读的一系列属性。定义了主要和最小的设备 类和服务。然而,它描述的设备属性和和服务是不完全可靠的,但是,在表示设备类型时, 它是有用的。 BluetoothProfile:
Android 蓝牙:创建 Bluetooth,找到本地区域可用的蓝牙设备或匹配的蓝牙设备,连接 设备,传输数据。
所有的 Bluetooth APIs 都在 android.bluetooth 包下。下面是创建蓝牙连接需要实现 的类和接口:
BluetoothAdapter: 表示本地的蓝牙适配器。BluetoothAdapter 是所有蓝牙交换的接入点。使用它,你可
import poundButton; import poundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast;
private static final UUID MY_UUID = UUID .fromString("00001101-0000-1000-8000-00805F9B34FB");
// Intent 需要 编码 public static final int REQUEST_CONNECT_DEVICE = 1; private static final int REQUEST_ENABLE_BT = 2;
一个代表蓝牙属性的接口。指基于无线蓝牙交流的无线接口规则。 BluetoothHeadset:
提供在手机手机上使用蓝牙耳机的支持。 BluetoothA2dp:
定义什么样的数据可以在蓝牙之间传递。 BluetoothProfiles.ServiceListener: 当蓝牙设备连接或者断开时,用它来通知 BluetoothProfiles IPC 客户端。它是一个接 口。 蓝牙权限:
D = false; if (D)
Log.e(TAG, "+++ ON CREATE +++"); Log.i(info, "" + dialogs); // 设置窗口布局 //requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(yout.main_bluetooth);
// 名字的连接装置
private String mConnectedDeviceName = null; // 传出消息的字符串缓冲区 private StringBuffer mOutStringBuffer; // 当地的蓝牙适配器 private BluetoothAdapter mBluetoothAdapter = null; // 成员对象的聊天服务 private BluetoothChatService mChatService = null; // 设置标识符,选择用户接受的数据格式 private boolean dialogs;
//HEXCheckBox = (CheckBox) findViewById(R.id.radioMale); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/ breakButton = (Button) findViewById(R.id.button_break); // 得到当地的蓝牙适配器 mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/ // 初始化 CheckBox //checkBox_sixteen = (CheckBox) findViewById(R.id.checkBox_sixteen); /*****************************************************************/ /*****************************************************************/ /*****************************************************************/
public class BluetoothChat extends Activity { // 调试 private static final String TAG = "BluetoothChat"; private static boolean D = true; private static final String info = "junge"; // 类型的消息发送从 bluetoothchatservice 处理程序 public static final int MESSAGE_STATE_CHANGE = 1; public static final int MESSAGE_READ = 2; public static final int MESSAGE_WRITE = 3; public static final int MESSAGE_DEVICE_NAME = 4; public static final int MESSAGE_TOAST = 5; public static final String BluetoothData = "fullscreen"; public String filename = ""; // 用来保存存储的文件名 private String newCode = ""; private String newCode2 = ""; // 键名字从收到的 bluetoothchatservice 处理程序 public static final String DEVICE_NAME = "device_name"; public static final String TOAST = "toast"; // 独特的是这个应用程序
以发现其他的蓝牙设备,查找一些匹配的设备,用 MAC 地址来实例化一个 BluetoothDevice。 创建一个 BluetoothServerSocket 来监听其他设备,进而和它们进行通信。
BluetoothDevice: 表示远程的蓝牙设备。用它通过 BluetoothSocket 来请求与远程的设备进行连接。后者 查询设备的基本信息,例如名称,地址,类或者结合的状态。 BluetoothSocket:
//第一次输入加入-->变量 private int sum =1;
// 名社民党记录当创建服务器套接字 String mmsg = ""; String mmsg2 = "";
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
实现效果图如下:(1)启动时请求打开蓝牙
(2)搜索设备 (3)链接一个设备
(4)下面即可进行数据传输 具体实现代码如下: (1)BluetoothChat.class package com.example.BluetoothChat;
import java.io.UnsupportedEncodingException;
//getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE,yout.custom_title); mInputEditText = (EditText) findViewById(R.id.editText1); mInputEditText.setGravity(Gravity.TOP); mInputEditText.setSelection(mInputEditText.getText().length(), mInputEditText.getText().length()); mInputEditText.clearFocus(); mInputEditText.setFocusable(false); // 设置文本的标题 mTitle = (TextView) findViewById(R.id.title_left_text); //mTitle.setText(R.string.app_name); mTitle = (TextView) findViewById(R.id.title_right_text); // 初始化 Radiobutton]
为了使用蓝牙,你必须在你的应用程序中声明权限。 <manifest ... >
<uses-permission android:name="android.permission.BLUETOOTH" /> ... </manifest> 两种权限:BLUETOOTH 和 BLUETOOTH ADMIN. 当使用 BLUETOOTH ADMIN 时,一定要声明 BLUETOOTH。 工程目录如下:
import java.util.UUID;
import comroid.app.Activity; import android.app.AlertDialog; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.text.Html; import android.util.Log; import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.WindowManager; import android.view.inputmethod.EditorInfo; import android.widget.Button; import android.widget.CheckBox;
/*****************************************************************/ /*****************************************************************/
/*****************************************************************/
表示一个 Bluetooth socket 接口(与 TCP socket 相似)。它是一个连接点,运行设备 通过 InputStream 和 OutputStream 的形式来交换数据。
BluetoothServiceSocket: 表示一个打开服务 socket,用来监听收到的请求(与 TCP server socket 相似)。为了 连接设备,一个设备必须打开服务 socket。当一个远程的设备请求连接的时候,当连接被 接收的时候,BluetoothServiceSocket 返回一个 BluetoothSocket。 BluetoothClass: 描述蓝牙设备的一般特征和性能。这是个只读的一系列属性。定义了主要和最小的设备 类和服务。然而,它描述的设备属性和和服务是不完全可靠的,但是,在表示设备类型时, 它是有用的。 BluetoothProfile:
Android 蓝牙:创建 Bluetooth,找到本地区域可用的蓝牙设备或匹配的蓝牙设备,连接 设备,传输数据。
所有的 Bluetooth APIs 都在 android.bluetooth 包下。下面是创建蓝牙连接需要实现 的类和接口:
BluetoothAdapter: 表示本地的蓝牙适配器。BluetoothAdapter 是所有蓝牙交换的接入点。使用它,你可
import poundButton; import poundButton.OnCheckedChangeListener; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast;
private static final UUID MY_UUID = UUID .fromString("00001101-0000-1000-8000-00805F9B34FB");
// Intent 需要 编码 public static final int REQUEST_CONNECT_DEVICE = 1; private static final int REQUEST_ENABLE_BT = 2;
一个代表蓝牙属性的接口。指基于无线蓝牙交流的无线接口规则。 BluetoothHeadset:
提供在手机手机上使用蓝牙耳机的支持。 BluetoothA2dp:
定义什么样的数据可以在蓝牙之间传递。 BluetoothProfiles.ServiceListener: 当蓝牙设备连接或者断开时,用它来通知 BluetoothProfiles IPC 客户端。它是一个接 口。 蓝牙权限:
D = false; if (D)
Log.e(TAG, "+++ ON CREATE +++"); Log.i(info, "" + dialogs); // 设置窗口布局 //requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView(yout.main_bluetooth);
// 名字的连接装置
private String mConnectedDeviceName = null; // 传出消息的字符串缓冲区 private StringBuffer mOutStringBuffer; // 当地的蓝牙适配器 private BluetoothAdapter mBluetoothAdapter = null; // 成员对象的聊天服务 private BluetoothChatService mChatService = null; // 设置标识符,选择用户接受的数据格式 private boolean dialogs;