`
bkship
  • 浏览: 47872 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

蓝牙传输文件

 
阅读更多
这篇文章分为两部分:

第一部分:使用系统自身带的蓝牙功能,直接用intent调用就可以
private void sendFile(FileInfo fileInfo){
		Intent intent = new Intent();
		intent.setAction(Intent.ACTION_SEND);
        //这个类型函数是自己工具类的方法,你可以自己设置文件类型,例如图片文件:image/*  
        //不想写类型直接*/*也是可以的
		String type = UtilFileClassify.getMIMEType(fileInfo.fileName);
		intent.setType(type);
        //这里setClassName就是指定蓝牙,不写这句就弹出选择用什么发送
        //有蓝牙啊,gmail啊,彩信之类的
		intent.setClassName("com.android.bluetooth"
                , "com.android.bluetooth.opp.BluetoothOppLauncherActivity");
		intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(
                new File(fileInfo.filePath)));
		startActivity(intent);
	}


需注意的是android系统好像不愿意你蓝牙传送apk,如果你传送会显示失败。
在网上看到传送方式有两种,我去试验下那个蓝牙用stream方式可不可以传送apk

第二部分:用BluetoothAdapter那一系列的操作自己写server 以及 client

1.获取本机的蓝牙适配器:
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();//获取本机蓝牙适配器
if(btAdapter == null){
   Log.e("","there isnt any blouetooth in your device!");
   return;
}


2.打开蓝牙适配器:
if(!btAdapter.isEnable){
   Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
   startActivity(intent);
} 


3.获取已经配对的蓝牙设备:
Set<BluetoothDevice> pairedDevices = btAdapter.getBondedDevice();
for(int i = o;i<pairedDevice.size();i++){
   BluetoothDevice btDevice = pairedDevice.get(i);
   String str = "Name:"+btDevice.getName()+" Address:"+btDevice.getAddress();
   Log.e("",str);
}


4.打开可可检测性:
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
startActivity(intent);


注意这里的时间最多设置为300s 当大于300S时候还一样是300s

5.扫描周围的设备:
if(btAdapter.isDiscovering){
   btAdapter.cancelDiscovery();
}
btAdapter.startDiscovery();//就这样启动就可以,当扫描到设备后系统会发广播,所以要注册广播来接收扫描到的设备信息

private BrodcastReceiver btReceiver = new BroadcastReceiver(){
   public void onReceive(Context context,Intent intent){
      String action = intent.getAction();
      if(BlutoothDevice.ACTION_FOUND.equals(action)){
         BluetoothDevice btDevice = intent.getParcelableExtra(
            BluetoothDevice.EXTRA_DEVICE);
         Log.e("",""+btDevice);
      } else if(BluetoothDevice.ACTION_DISCOVERY_FINISHED.equals(action)){
         Log.e("","discovery finished");
      }
   }

}

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
this.registerReceiver(btReceiver,filter);

filter = new IntentFilter(BluetoothDevice.ACTION_DISCOVERY_FINISHED);
this.registerReceiver(btReceiver,filter);

//别忘记在程序退出时候取消广播
public void onDestroy(){
   super.onDestroy();
   if(btAdapter != null){
      btAdapter.cancelDiscovery;
   }
   this.unregisterReceiver(btReceiver);
}



6.连接,这个主要是BluetoothSocket和BluetoothServerSocket,客户端,和服务器
其实这个UUID我也是一知半解,百科看完了大概就当个ID用吧,服务端跟客户端要一样的
网上有一篇很不错的帖子讲了这部分的原理:
[url]
http://lighthearts.blog.163.com/blog/static/1726840522011791111499/
[/url]
那我就借用下他的两小块代码吧:
//服务端
private BluetoothServerSocket serverSocket = btAdapter
    .listenUsingRfcommWithServiceRecord(SERVICE_NAME,SERVICE_UUID);
private BluetoothSocket exchangeSocket = serverSocket.accept();

//客户端
private BluetoothSocket clientSocket = btDevice
    .createRfcommSocketToServerRecord(SERVER_UUID);
clientSocket.connet();

//接下来就是clientSocket.getOutputStream().write(byte[]);

分享到:
评论

相关推荐

    联想工程师专用小工具 蓝牙传输文件工具V2.49.1

    联想工程师专用小工具 蓝牙传输文件工具V2.49.1联想工程师专用小工具 蓝牙传输文件工具V2.49.1联想工程师专用小工具 蓝牙传输文件工具V2.49.1联想工程师专用小工具 蓝牙传输文件工具V2.49.1联想工程师专用小工具 ...

    实现蓝牙传输文件源代码

    在Android平台上,实现蓝牙传输文件是一项常见的功能,尤其在移动设备之间进行数据交换时。本文将深入探讨如何通过源代码实现这一功能,重点是`BluetoothChatService`类,它是整个蓝牙文件传输的核心。 首先,我们...

    Android手机使用蓝牙传输文件.pdf

    《Android手机使用蓝牙传输文件》 在现代移动通信领域,Android手机因其开放性和广泛的用户基础,已经成为日常生活中不可或缺的一部分。其中,蓝牙技术作为一种短距离无线通信方式,使得Android手机能够方便地与...

    android蓝牙传输文件

    "android蓝牙传输文件"这个话题涵盖了创建一个蓝牙聊天程序的关键要素,包括搜索蓝牙设备、建立连接以及发送和接收数据。下面将详细讨论这些知识点。 首先,我们需要理解Android蓝牙API的基础。Android系统提供了一...

    蓝牙通信 Android开发实现手机间通过蓝牙传输文件

    总的来说,这个Android应用通过集成蓝牙通信功能,实现了手机间的文件无线传输,展示了如何利用Android API与蓝牙设备交互。同时,也涵盖了权限请求、设备搜索、连接管理和数据通信等关键知识点。这样的应用在日常...

    利用电脑蓝牙传送文件

    要开始使用电脑的蓝牙功能传送文件,你需要确保电脑支持蓝牙,并且已经正确安装了驱动程序。大多数现代电脑都内置了蓝牙模块,但如果你的电脑没有,可以购买一个外置的USB蓝牙适配器。安装好驱动后,电脑的蓝牙功能...

    联想蓝牙传输文件工具V2.49.1绿色免费版

    蓝牙传输文件工具是一款针对联想电脑打造的蓝牙文件传输工具,有了这款工具,你可以一键传输电脑文件或接收别人发出的文件,打开工具即可使用,非常方便快捷,欢迎大家下载 软件说明 联想蓝牙传输文件工具是一款...

    android 手机之间通过蓝牙传输文件,可以传APK

    通过蓝牙,用户可以在不同的Android设备间方便地传输各种类型的数据,包括应用程序(APK)文件。以下将详细介绍如何实现这一功能,并基于`BluetoothDemo`项目进行修改以支持APK的传输。 1. **开启蓝牙**: 在...

    怎样用Android手机蓝牙传送文件.docx

    在Android手机上使用蓝牙传输文件是一项常见的操作,无论是分享照片、文档还是其他类型的文件,蓝牙都能提供一个简单直接的方式。以下是如何使用Android手机通过蓝牙发送和接收文件的详细步骤: ### 发送蓝牙文件 ...

    Windows 7 Windows 8如何使用蓝牙传输文件.docx

    ### 如何在Windows 7与Windows 8上利用蓝牙传输文件 #### 一、引言 随着技术的发展,人们越来越倾向于使用便捷的方式进行文件传输。蓝牙作为一种无线技术标准,不仅适用于移动设备之间的通信,同样也支持电脑之间的...

    android手机怎样通过蓝牙发送文件和接受文件的方法

    ### Android手机通过蓝牙发送与接收文件的方法 #### 一、蓝牙文件发送方法 在早期的Android系统中,蓝牙功能相对有限,主要支持蓝牙耳机等基本配对操作,但随着技术的发展,用户对于通过蓝牙发送文件的需求逐渐...

    笔记本和手机间如何通过蓝牙传输文件.docx

    标题中的“笔记本和手机间如何通过蓝牙传输文件.docx”是一个文档标题,它指出文档内容是关于使用蓝牙技术在笔记本电脑和手机之间交换文件的教程。描述与标题相同,进一步强调了这个主题。 蓝牙是一种无线通信技术...

    蓝牙文件传输完整日志

    蓝牙文件传输完整日志,在framework层加的日志,方便大家阅读分析

    联想工程师专用小工具123-蓝牙传输文件工具V2.49.1.exe.zip

    《联想工程师专用小工具——蓝牙传输文件工具V2.49.1详解》 在IT行业中,设备维护和故障排查是工程师们日常工作的重要部分。针对这种情况,联想公司为工程师们提供了一系列专用的小工具,旨在提高工作效率,简化...

    松下JT-H322HT扫描及蓝牙传输文件

    松下JT-H322HT是一款多功能办公设备,集扫描和蓝牙传输功能于一体。这款设备提供的扫描程序使得用户能够方便...无论是DLL文件的使用、XML和CSV文件的处理,还是蓝牙传输技术的应用,都是现代办公环境中不可或缺的技能。

    基于Android的蓝牙文件传输

    关键技术与难点包括 Java、Android 编程知识、Android SDK 应用、数据库服务器 SQLite、蓝牙传输协议、音频处理和 IO 流处理等。 蓝牙技术是支持设备短距离通信的无线电技术,可以在包括移动电话、PDA、无线耳机、...

    安卓蓝牙实现的消息发送及文件传输

    本主题将深入探讨如何在安卓系统中实现蓝牙的消息发送和文件传输。 首先,要搜索附近的蓝牙设备,你需要调用`BluetoothAdapter`类的`startDiscovery()`方法。这个过程会扫描周围开启蓝牙并可被发现的设备,并通过`...

    蓝牙传输文件工具V2.49.1.exe

    蓝牙传输文件工具V2.49.1.exe

    C# 蓝牙 文件传输 DEMO

    在IT领域,尤其是在软件开发中,蓝牙技术常用于设备之间的短距离无线通信,尤其是在移动设备和桌面系统之间进行文件传输。本DEMO是基于C#编程语言实现的蓝牙文件传输功能,它允许用户通过蓝牙接口将文件从一台设备...

    怎么使用电脑蓝牙 电脑蓝牙传输文件步骤【步骤教程】.docx

    ### 如何使用电脑蓝牙进行文件传输 随着科技的发展,蓝牙技术已经成为现代电子设备不可或缺的一部分,尤其是在简化设备间通信方面发挥着重要作用。本文旨在详细介绍如何利用电脑的蓝牙功能进行文件传输,包括接收...

Global site tag (gtag.js) - Google Analytics