别以为蓝牙5.0耳机就能有好音质 无线耳机还差了点环球网 ⋅ - 威尼斯人

别以为蓝牙5.0耳机就能有好音质 无线耳机还差了点环球网 ⋅

2019-04-07 10:36:03 | 作者: 振荣 | 标签: 蓝牙,耳机,设备 | 浏览: 616

BT4.0低功耗蓝牙衔接

2. 蓝牙驱动

蓝牙驱动供给64位版别的比较少。所以常常无法装置。这点只能碰运气,没有参阅性。

1。翻开蓝牙模块 wx.openBluetoothAdapter(OBJECT)

2。查找邻近蓝牙设备 wx.startBluetoothDevicesDiscovery(OBJECT)

4。衔接上蓝牙设备 wx.createBLEConnection(OBJECT)

7。向蓝牙设备发送升/降指令 wx.writeBLECharacteristicValue(OBJECT)

8。封闭蓝牙模块 wx.closeBLEConnection(OBJECT)

bluetooth 蓝牙支撑

dund 支撑经过蓝牙拨号衔接网络

hidd 蓝牙相关

pand 蓝牙个人区域网络

      2. 测验前请蓝牙配对好手机与PC机蓝牙适配器(所以你需求一个蓝牙适配器刺进PC USB口)

package com.royal.bluetooth;
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.DialogInterface;
import android.content.Intent;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;
 * BlueTooth Sensor
 * @author royal
public class BlueTooth extends Activity {
 private static final int REQUEST_DISCOVERY = 0x1;
 // 树立蓝牙通讯的UUID 
 private static final UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
 // 自带的蓝牙适配器
 private BluetoothAdapter bluetoothAdapter = null;
 // 扫描得到的蓝牙设备
 private BluetoothDevice device = null;
 // 蓝牙通讯socket
 private BluetoothSocket btSocket = null;
 // 手机输出流
 private OutputStream outStream = null;
 private byte[] msgBuffer = null;
 // 传感器办理
 private SensorManager sensorMgr = null;
 // 传感器感应
 private Sensor sensor = null;
 // 手机x、y、z轴方向数据
 private int x, y, z;
 * 当这个activity第一次被创立的时分呼叫该办法
 @Override
 public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 /* 使程序窗口全屏 */
 // 创立一个没有title的全屏主题
 this.setTheme(android.R.style.Theme_NoTitleBar_Fullscreen);
 // 窗口全屏
 this.requestWindowFeature(Window.FEATURE_NO_TITLE);
 // 设置全屏标志
 this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
 WindowManager.LayoutParams.FLAG_FULLSCREEN);
 // 按bluetooth.xml文件布局风格
 setContentView(R.layout.bluetooth);
 // Gravity sensing 获取传感器
 sensorMgr = (SensorManager) this.getSystemService(SENSOR_SERVICE);
 sensor = sensorMgr.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
 // 获取手机默许上的蓝牙适配器
 bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
 // 敞开手机蓝牙设备
 bluetoothAction();
 // 查询邻近一切的蓝牙设备并挑选衔接
 connectToDevice();
 * 蓝牙开端 查询手机是否支撑蓝牙,假如支撑的话,进行下一步。 查看蓝牙设备是否已翻开,假如否则翻开。
 public void bluetoothAction() {
 // 查看手机是否有蓝牙设备功用
 if (hasAdapter(bluetoothAdapter)) {
 if (!bluetoothAdapter.isEnabled()) {
 // 敞开蓝牙功用
 bluetoothAdapter.enable();
 } else {
 // 程序停止
 this.finish();
 * 查看手机是否有蓝牙设备功用
 * @param ba
 * 蓝牙设备适配器
 * @return boolean
 public boolean hasAdapter(BluetoothAdapter ba) {
 if (ba != null) {
 return true;
 displayLongToast("该手机没有蓝牙功用!");
 return false;
 * 创立一个长期弹出的提示窗口toast
 * @param str
 * 提示字符串
 public void displayLongToast(String str) {
 Toast toast = Toast.makeText(this, str, Toast.LENGTH_LONG);
 toast.setGravity(Gravity.TOP, 0, 220);
 toast.show();
 * 创立一个短时间弹出的提示窗口toast
 * @param str
 * 提示字符串
 public void displayShortToast(String str) {
 Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);
 toast.setGravity(Gravity.TOP, 0, 220);
 toast.show();
 * 蓝牙若发动,则查询邻近的一切蓝牙设备进行挑选衔接
 public void connectToDevice() {
 if (bluetoothAdapter.isEnabled()) {
 // 跳到另一个activity---DiscoveryActivity,该类用于查询邻近一切的蓝牙设备。
 Intent intent = new Intent(this, DiscoveryActivity.class);
 // 弹出窗口提示
 displayLongToast("请挑选一个蓝牙设备进行衔接!");
 // 手机此刻跳进DiscoveryActivity程序界面。
 // 留意:使用startActivityForResult回调数据回来当时的程序。
 // 详细参阅:http://snmoney.blog.163.com/blog/static/440058201073025132670/
 this.startActivityForResult(intent, REQUEST_DISCOVERY);
 } else {
 this.finish();
 * startActivityForResult触发调用DiscoveryActivity后进行处理
 * 获取到相应的蓝牙地址数据后,开端咱们中心的数据交互
 @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
 // TODO Auto-generated method stub
 // super.onActivityResult(requestCode, resultCode, data);
 // 这儿保证彼此回调时数据的精确传输
 if (requestCode != REQUEST_DISCOVERY) {
 return;
 if (resultCode != RESULT_OK) {
 return;
 // 获取到DiscoveryActivity点击项后传过来的蓝牙设备地址
 String addressStr = data.getStringExtra("address");
 // 依据蓝牙设备地址得到该蓝牙设备目标(这是扫描到的蓝牙设备哦,不是自己的)
 device = bluetoothAdapter.getRemoteDevice(addressStr);
 try {
 //依据UUID创立通讯套接字
 btSocket = device.createRfcommSocketToServiceRecord(uuid);
 } catch (Exception e) {
 displayLongToast("通讯通道创立失利!");
 if (btSocket != null) {
 try {
 //这一步一定要保证衔接上,否则的话程序就卡死在这儿了。
 btSocket.connect();
 displayLongToast("通讯通道衔接成功!");
 } catch (IOException ioe) {
 displayLongToast("通讯通道衔接失利!");
 try {
 btSocket.close();
 displayLongToast("通讯通道已封闭!");
 } catch (IOException ioe2) {
 displayLongToast("通讯通道没有衔接,无法封闭!");
 try {
 // 获取输出流
 outStream = btSocket.getOutputStream();
 // 手机宣布数据
 sendSensorData();
 } catch (IOException e) {
 displayLongToast("数据流创立失利!");
 * 发送数据 宣布从手机经过重力感应器获取到的数据
 public void sendSensorData() {
 // 重力感应监听
 SensorEventListener lsn = new SensorEventListener() {
 // 重写内部办法,当精确度发生变化是触发该办法。
 @Override
 public void onAccuracyChanged(Sensor s, int accuracy) {
 // TODO Auto-generated method stub
 // 重写内部办法,当数据发生变化的时分触发该办法。
 @Override
 public void onSensorChanged(SensorEvent se) {
 // TODO Auto-generated method stub
 * 当手机横向头部朝左屏幕正对自己时 x=10,y=0,z=0; 当手机竖向屏幕正对自己时 x=0,y=10,z=0;
 * 当手机平放屏幕朝上时 x=0,y=0,z=10; 由此可知:当手握手机且竖向屏幕正对自己时,有: 水平就是X轴
 * 笔直就是Y轴 屏幕所对方向就是Z轴 详细可参阅简略比如---SensorDemo
 x = (int)se.values[SensorManager.DATA_X];
 y = (int)se.values[SensorManager.DATA_Y];
 z = (int)se.values[SensorManager.DATA_Z];
 if (y 5 || y -5) {
// String str = String.valueOf(x).concat(String.valueOf(y)).concat(String.valueOf(z));
 String str = "x" + String.valueOf(x) + "y" + String.valueOf(y) + "z" + String.valueOf(z) + "/";
 msgBuffer = str.getBytes();
 try {
 System.out.println("x=" + x + " y =" + y + " z =" + z);
 outStream.write(msgBuffer);
 } catch (IOException e) {
 displayShortToast("数据发送失利!");
// if (y 5 || y -5) {
// DataModel dataModel=new DataModel(x,y,z);
// try {
// System.out.println("x=" + x + " y =" + y + " z =" + z);
// msgBuffer = dataModel.convertSelfToByteArray();
// System.out.println("--------"+msgBuffer.length);
// outStream.write(msgBuffer);
// } catch (IOException e) {
// Log.e("BlueTooth",e.getMessage());
// e.printStackTrace();
// displayShortToast("数据发送失利!");

遥控器效劳器端

首要,咱们需求编写一个遥控器的效劳器端(支撑蓝牙的电脑)来接纳手机端宣布的信号。为了完成这个效劳器端,我用到了一个叫做Bluecove(专门用来为蓝牙效劳的!)的Java库。

protected void onStart() {
 super.onStart();
 // If BT is not on, request that it be enabled.
 // setupCommand() will then be called during onActivityResult
 if (!mBluetoothAdapter.isEnabled()) {
 Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
 startActivityForResult(enableIntent, REQUEST_ENABLE_BT);
 // otherwise set up the command service
 else {
 if (mCommandService==null)
 setupCommand();
private void setupCommand() {
 // Initialize the BluetoothChatService to perform bluetooth connections
 mCommandService = new BluetoothCommandService(this, mHandler);

 onStart()用于查看手机上的蓝牙是否现已翻开,假如没有翻开则创立一个Intent来翻开蓝牙。setupCommand()用于在按下音量加或音量减键时向效劳器发送指令。其间用到了onKeyDown事情:

bluetooth (蓝牙相关)

低功耗蓝牙衔接。

蓝牙驱动。

蓝牙驱动供给位版别的比较少所以常常无法装置这点只能碰运气没有参阅性。

第二名 小米耳机

骨传导、USB耳机、高灵敏度硅麦克风

第二名小米耳机。

骨传导耳机高灵敏度硅麦克风。

第二名小米耳机。

骨传导耳机高灵敏度硅麦克风。

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章