当前位置:首页 > 代码 > 正文

android源代码蓝牙无法关闭(android 打开蓝牙代码)[20240428更新]

admin 发布:2024-04-28 15:14 124


今天给各位分享android源代码蓝牙无法关闭的知识,其中也会对android 打开蓝牙代码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

android怎么来判断蓝牙开、关的状态?求代码

Android 蓝牙编程的基本步骤:

获取蓝牙适配器BluetoothAdapter blueadapter=BluetoothAdapter.getDefaultAdapter();

如果BluetoothAdapter 为null,说明android手机没有蓝牙模块。

判断蓝牙模块是否开启,blueadapter.isEnabled() true表示已经开启,false表示蓝牙并没启用。

启动配置蓝牙可见模式,即进入可配对模式Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);

in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200);

startActivity(in);  ,200就表示200秒。

获取蓝牙适配器中已经配对的设备SetBluetoothDevice device=blueadapter.getBondedDevices();

还需要在androidManifest.xml中声明蓝牙的权限

uses-permission android:name="android.permission.BLUETOOTH" /

uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /

接下来就是根据自己的需求对BluetoothAdapter 的操作了。

Android编程中,如何断开指定BLE设备连接?

网页链接

参考一下,应该能够解决您的问题,你想通过列表直接删除想要删除的连接好像  是达不到的,你可以尝试关闭蓝牙服务。因为连接和断开都是需要传入同一个回调才可以,否则是无法断开的。不知道您遇到的具体问题的原因是什么,这样养的想法看来不容易实现....

android_studio手机蓝牙串口通信源代码

初涉android的蓝牙操作,按照固定MAC地址连接获取Device时,程序始终是异常终止,查了好多天代码都没查出原因。今天改了一下API版本,突然就成功连接了。总结之后发现果然是个坑爹之极的错误。

为了这种错误拼命查原因浪费大把时间是非常不值得的,但是问题不解决更是揪心。可惜我百度了那么多,都没有给出确切原因。今天特此mark,希望后来者遇到这个问题的时候能轻松解决。

下面是我的连接过程,中间崩溃原因及解决办法。

1:用AT指令获得蓝牙串口的MAC地址,地址是简写的,按照常理猜测可得标准格式。

2:开一个String adress= "************" //MAC地址, String MY_UUID= "************"//UUID根据通信而定,网上都有。

3:取得本地Adapter用getDefaultAdapter(); 远程的则用getRemoteDevice(adress); 之后便可用UUID开socket进行通信。

如果中途各种在getRemoteDevice处崩溃,大家可以查看一下当前的API版本,如果是2.1或以下版本的话,便能确定是API版本问题,只要换成2.2或者以上就都可以正常运行了~   这么坑爹的错误的确很为难初学者。  唉··········  为这种小trick浪费很多时间真是难过。

(另外有个重要地方,别忘了给manifest里面加以下两个蓝牙操作权限哦~)

uses-permission android:name="android.permission.BLUETOOTH"/uses-permission

uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/uses-permission

下面附上Android蓝牙操作中用固定MAC地址传输信息的模板,通用搜索模式日后再补删模板:

private BluetoothAdapter mBluetoothAdapter = null;

private BluetoothSocket btSocket = null;

private OutputStream outStream = null;

private InputStream inStream = null;

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");  //这条是蓝牙串口通用的UUID,不要更改

private static String address = "00:12:02:22:06:61"; // ==要连接的蓝牙设备MAC地址

/*获得通信线路过程*/

/*1:获取本地BlueToothAdapter*/

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if(mBluetoothAdapter == null)

{

Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();

finish();

return;

}

if(!mBluetoothAdapter.isEnabled())

{

Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show();

finish();

return;

}

/*2:获取远程BlueToothDevice*/

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

if(mBluetoothAdapter == null)

{

Toast.makeText(this, "Can't get remote device.", Toast.LENGTH_LONG).show();

finish();

return;

}

/*3:获得Socket*/

try {

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Socket creation failed.", e);

}

/*4:取消discovered节省资源*/

mBluetoothAdapter.cancelDiscovery();

/*5:连接*/

try {

btSocket.connect();

Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");

} catch (IOException e) {

try {

btSocket.close();

} catch (IOException e2) {

Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);

}

}

/*此时可以通信了,放在任意函数中*/

/*  try {

outStream = btSocket.getOutputStream();

inStream = btSocket.getInputStream(); //可在TextView里显示

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

String message = "1";

byte[] msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

*/

通用搜索模式代码模板:

简洁简洁方式1 demo

作用: 用VerticalSeekBar控制一个 LED屏幕的亮暗。

直接上码咯~

package com.example.seed2;

import android.app.Activity;

import android.app.AlertDialog;

import android.app.Dialog;

import android.os.Bundle;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.UUID;

import android.bluetooth.BluetoothAdapter;

import android.bluetooth.BluetoothDevice;

import android.bluetooth.BluetoothSocket;

import android.content.DialogInterface;

import android.util.Log;

import android.view.KeyEvent;

import android.widget.Toast;

public class MetalSeed extends Activity {

private static final String TAG = "BluetoothTest";

private BluetoothAdapter mBluetoothAdapter = null;

private BluetoothSocket btSocket = null;

private OutputStream outStream = null;

private InputStream inStream = null;

private VerticalSeekBar vskb = null;

private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");  //这条是蓝牙串口通用的UUID,不要更改

private static String address = "00:12:02:22:06:61"; // ==要连接的蓝牙设备MAC地址

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

this.vskb = (VerticalSeekBar)super.findViewById(R.id.mskb);

this.vskb.setOnSeekBarChangeListener(new OnSeekBarChangeListenerX());

mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if(mBluetoothAdapter == null)

{

Toast.makeText(this, "Bluetooth is not available.", Toast.LENGTH_LONG).show();

finish();

return;

}

if(!mBluetoothAdapter.isEnabled())

{

Toast.makeText(this, "Please enable your Bluetooth and re-run this program.", Toast.LENGTH_LONG).show();

finish();

return;

}

}

private class OnSeekBarChangeListenerX implements VerticalSeekBar.OnSeekBarChangeListener {

public void onProgressChanged(VerticalSeekBar seekBar, int progress, boolean fromUser) {

//Main.this.clue.setText(seekBar.getProgress());

/*  String message;

byte [] msgBuffer;

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG,"ON RESUME : Output Stream creation failed.", e);

}

message =Integer.toString( seekBar.getProgress() );

msgBuffer = message.getBytes();

try{

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e (TAG, "ON RESUME : Exception during write.", e);

}       */

}

public void onStartTrackingTouch(VerticalSeekBar seekBar) {

String message;

byte [] msgBuffer;

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG,"ON RESUME : Output Stream creation failed.", e);

}

message =Integer.toString( seekBar.getProgress() );

msgBuffer = message.getBytes();

try{

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e (TAG, "ON RESUME : Exception during write.", e);

}

}

public void onStopTrackingTouch(VerticalSeekBar seekBar) {

String message;

byte [] msgBuffer;

try {

outStream = btSocket.getOutputStream();

} catch (IOException e) {

Log.e(TAG,"ON RESUME : Output Stream creation failed.", e);

}

message =Integer.toString( seekBar.getProgress() );

msgBuffer = message.getBytes();

try{

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e (TAG, "ON RESUME : Exception during write.", e);

}

}

}

@Override

public void onStart()

{

super.onStart();

}

@Override

public void onResume()

{

super.onResume();

BluetoothDevice device = mBluetoothAdapter.getRemoteDevice(address);

try {

btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Socket creation failed.", e);

}

mBluetoothAdapter.cancelDiscovery();

try {

btSocket.connect();

Log.e(TAG, "ON RESUME: BT connection established, data transfer link open.");

} catch (IOException e) {

try {

btSocket.close();

} catch (IOException e2) {

Log .e(TAG,"ON RESUME: Unable to close socket during connection failure", e2);

}

}

// Create a data stream so we can talk to server.

/*  try {

outStream = btSocket.getOutputStream();

inStream = btSocket.getInputStream();

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Output stream creation failed.", e);

}

String message = "read";

byte[] msgBuffer = message.getBytes();

try {

outStream.write(msgBuffer);

} catch (IOException e) {

Log.e(TAG, "ON RESUME: Exception during write.", e);

}

int ret  = -1;

while( ret != -1)

{

try {

ret = inStream.read();

} catch (IOException e)

{

e.printStackTrace();

}

}

*/

}

@Override

Android手机蓝牙不能用怎么办?

Android手机蓝牙不能用,可重启一次手机,蓝牙硬件会在重启过程中会自动被重置。重启后蓝牙功能就可以正常启动了。

如何实现android蓝牙开发 自动配对连接,并不弹出提示框

android蓝牙自动配对连接的具体代码如下: 1. 获取蓝牙适配器BluetoothAdapter blueadapter=BluetoothAdapter.getDefaultAdapter(); 如果BluetoothAdapter 为null,说明android手机没有蓝牙模块。 2. 判断蓝牙模块是否开启,blueadapter.isEnabled() true表示已经开启,false表示蓝牙并没启用。 3. 启动配置蓝牙可见模式,即进入可配对模式Intent in=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); in.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 200); startActivity(in); ,200就表示200秒。 4. 获取蓝牙适配器中已经配对的设备SetBluetoothDevice device=blueadapter.getBondedDevices(); 当然,还需要在androidManifest.xml中声明蓝牙的权限 uses-permission android:name="android.permission.BLUETOOTH" / uses-permission android:name="android.permission.BLUETOOTH_ADMIN" / 5.自动配对设置Pin值 static public boolean autoBond(Class btClass, BluetoothDevice device, String strPin) throws Exception { Method autoBondMethod = btClass.getMethod("setPin", new Class[] { byte[].class }

关于android源代码蓝牙无法关闭和android 打开蓝牙代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/765.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载