精华内容
下载资源
问答
  • Android6.0蓝牙协议OPP

    千次阅读 2016-11-16 17:02:35
    因为毕设做了蓝牙通信相关的,所以工作后让我负责蓝牙模块。...1,OPP:Object push profile 面向对象传输协议,用于传输文件。 2,代码所在目录为\android\packages\apps\Bluetooth\src\com\android\bluetooth\

    因为毕设做了蓝牙通信相关的,所以工作后让我负责蓝牙模块。但是有bug的时候才发现对蓝牙协议的了解少之又少,现在先分析一个文件传输协议

    Chapter One,简单介绍

    1,OPP:Object push profile 面向对象传输协议,用于传输文件。

    2,代码所在目录为\android\packages\apps\Bluetooth\src\com\android\bluetooth\opp。对于手机是否支持OPP,目前我所接触到的有3处

    第一,首先系统方案提供商的蓝牙文档是否支持OPP,OPP有client和server之分

    第二,在底层代码中修改,禁止掉该协议。要修改的文件为

    android/device/qcom/common/rootdir/etc/init.qcom.bt.sh

    要修改的内容为

      setprop ro.qualcomm.bluetooth.opp false
    

    也就是说设置一个系统属性字段 ro.qualcomm.bluetooth.opp为false,即可禁止对opp的支持

    第三,在上层的配置文件中修改,要修改的文件目录为

    android\android\packages\apps\Bluetooth\res\values\config.xml

    要修改的内容为

    <bool name="profile_supported_opp">false</bool>

    Chapter Two,接收文件流程

    当已配对蓝牙设备发来文件时,本机手机会显示是否接收文件,然后显示进度,之后可以在蓝牙传输历史中看到该文件,过程如下:

                       


    这些我们都是能看到的,当然用sdk的工具也可以看到这些activity的名称,

    首先,是否要接受文件界面时为BluetoothOppIncomingFileConfirmActivity.java


    紧接着可以从状态栏进入到文件传输界面为 BluetoothOppTransferActivity.java


    蓝牙传输历史界面为BluetoothOppTransferHistory.java


    界面信息是依靠sdk下的工具hierarchyviewer获取到的,该工具对更改ui有很大的帮助。这些界面是看到了,可是他们是怎么启动的呢?为什么有文件传输时就会有通知呢???带着这个疑问进行探究。最终有一些收获。


    Chapter Three,代码分析

    1,重中之重:BluetoothOppReceiver.java。该receiver注册了蓝牙状态改变的广播

     <receiver
                android:process="@string/process"
                android:exported="true"
                android:name=".opp.BluetoothOppReceiver"
                android:enabled="@bool/profile_supported_opp">
                <intent-filter>
                    <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
                    <!--action android:name="android.intent.action.BOOT_COMPLETED" /-->
                    <action android:name="android.btopp.intent.action.OPEN_RECEIVED_FILES" />
                </intent-filter>
            </receiver>

    在蓝牙打开时会开启BluetoothOppService服务

    if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
                if (BluetoothAdapter.STATE_ON == intent.getIntExtra(
                        BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR)) {
                    if (V) Log.v(TAG, "Received BLUETOOTH_STATE_CHANGED_ACTION, BLUETOOTH_STATE_ON");
                    context.startService(new Intent(context, BluetoothOppService.class));
    ...
    ...
    ...
    ...
    


    因为任务需要,暂缓更新,未完待续



    展开全文
  • 蓝牙OPP协议文件传输格式修改

    千次阅读 2016-01-07 17:10:59
    android蓝牙在传输文件时对文件格式有限制,默认情况下,并不是所有文件都能够传输和共享。 在packages/apps/Bluetooth下面的AndroidManifest.xml中    android:process="@string/process"  android:theme="@...

    android蓝牙在传输文件时对文件格式有限制,默认情况下,并不是所有文件都能够传输和共享。
    在packages/apps/Bluetooth下面的AndroidManifest.xml中
            <activity android:name=".opp.BluetoothOppLauncherActivity"
                android:process="@string/process"
                android:theme="@android:style/Theme.Dialog" android:label="@string/bt_share_picker_label">
                <intent-filter>
                    <action android:name="android.intent.action.SEND" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="image/*" />
                    <data android:mimeType="video/*" />
                    <data android:mimeType="audio/*" />
                    <data android:mimeType="text/x-vcard" />
                    <data android:mimeType="text/plain" />
                    <data android:mimeType="text/html" />
                    <data android:mimeType="application/zip" />
                    <data android:mimeType="application/vnd.ms-excel" />
                    <data android:mimeType="application/msword" />
                    <data android:mimeType="application/vnd.ms-powerpoint" />
                    <data android:mimeType="application/pdf" />
                </intent-filter>
                <intent-filter>
                    <action android:name="android.intent.action.SEND_MULTIPLE" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="image/*" />
                    <data android:mimeType="video/*" />
                    <data android:mimeType="x-mixmedia/*" />
                    <data android:mimeType="text/x-vcard" />
                </intent-filter>
                <intent-filter>
                    <action android:name="android.btopp.intent.action.OPEN" />
                    <category android:name="android.intent.category.DEFAULT" />
                    <data android:mimeType="vnd.android.cursor.item/vnd.android.btopp" />
                </intent-filter>
            </activity>
    (1)发送时的限制:
    将AndroidManifest里面对文件类型的限制拿掉,增加相对应的mimetype 或 改为<data android:mimeType="*/*" />
    (2)接收时的限制:
    接收允许格式在文件:packages/apps/Bluetooth/../ BluetoothOppObexServerSession.java 中onput函数中处理。
    其定义则是在ACCEPTABLE_SHARE_INBOUND_TYPES这个数组中。文件:
    packages/apps/Bluetooth/src/com/android/bluetooth/opp/Constants.java


    安卓 支持的mimetype:
    libcore/luni/src/main/java/libcore/net/MimeUtils.java


    参考:frameworks/base/media/java/android/media/MediaFile.java


    展开全文
  • 1、packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppIncomingFileConfirmActivity.java  protected void onCreate(Bundle savedInstanceState) {  setupAlert();  mAlert.getButton

    1、packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppIncomingFileConfirmActivity.java
      protected void onCreate(Bundle savedInstanceState) {
         setupAlert();
         mAlert.getButton(DialogInterface.BUTTON_POSITIVE).performClick();//添加
    }
    2、packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppNotification.java
      private void updateIncomingFileConfirmNotification() {
        intent.setDataAndNormalize(contentUri); 
        mContext.sendBroadcast(intent, null);//添加
        //n.setLatestEventInfo(mContext, title, caption, PendingIntent.getBroadcast(mContext, 0,intent, 0));//删除
        mContext.sendBroadcast(intent, null);//添加
        //n.deleteIntent = PendingIntent.getBroadcast(mContext, 0, intent, 0);//删除
        //mNotificationMgr.notify(id, n);//删除
    }
    3、packages/apps/Bluetooth/src/com/android/bluetooth/opp/BluetoothOppReceiver.java
      else if (action.equals(Constants.ACTION_INCOMING_FILE_CONFIRM)) {

       ....
       /*删除
       NotificationManager notMgr = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
       if (notMgr != null) {
        notMgr.cancel((int)ContentUris.parseId(intent.getData())); 
        if (V) Log.v(TAG, "notMgr.cancel called"); 
       }

     */
    }

    展开全文
  • 蓝牙OPP源码解析

    2018-12-26 15:07:03
    本资源是基于Android O平台针对蓝牙OPP传输过程包括文件发送和文件接收、以及Android Beam使用OPP进行文件发送和文件接收过程的源码解析
  • OPP:对象存储规范(Object Push Profile),最为常见的,文件的传输都是使用此协议。 HFP:(Hands-free Profile),让蓝牙设备能够控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话...
    各种蓝牙协议的全称:

    OPP:对象存储规范(Object Push Profile),最为常见的,文件的传输都是使用此协议。


    HFP:(Hands-free Profile),让蓝牙设备能够控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否支持。


    HDP: HDP (Health Device Profile) 蓝牙医疗设备模式   能够创建支持蓝牙的医疗设备。使用蓝牙通信的应用程序。比如心率监视器。血液,温度计和秤。


    A2DP: Advanced Audio Distribution Profile (A2DP) 高级音频传输模式  A2DP是可以採用耳机内的芯片来堆栈数据,达到声音的高清晰度。有A2DP的耳机就是蓝牙立体声耳机。


    PAN:个人局域网(Personal Area Network)最新为了满足需求而出现的, 在小范围内可以将个人设备(自己的手机 电脑笔记本等)互联而组成的网络。

    转载于:https://www.cnblogs.com/zhchoutai/p/6932917.html

    展开全文
  • 蓝牙协议 HFP,HSP,A2DP,AVRCP,OPP,PBAP

    万次阅读 多人点赞 2016-07-30 14:43:15
    ,让蓝牙设备可以控制电话,如接听、挂断、拒接、语音拨号等,拒接、语音拨号要视蓝牙耳机及电话是否 支持。 HSP HSP 描述了 Bluetooth 耳机如何与计算机或其它 Bluetooth 设备(如手机)通信...
  • 蓝牙协议

    万次阅读 2016-12-06 22:18:28
    Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发 一、Android Bluetooth现状 在android官网可以了解到android4.2新增了部分新功能,但是对于BT熟悉的...
  • 就用到了Opp这个Profile。线面简单的阐述一下一个文件分享的流程。向外传输调用的用的是OppService中的客户端相应的方法,接收调用的是服务端相应的方法。FileManager----->ChooserActivity--->...
  • 蓝牙协议栈初识

    千次阅读 多人点赞 2018-12-03 10:30:02
    在学习的过程中一直有疑问,为什么蓝牙技术突然就产生了呢?蓝牙技术的目的是什么呢?蓝牙技术相对于它所替代的技术存在什么样的优势和劣势呢?蓝牙技术都做了些什么呢? 随着我们周围电子产品的增多电子产品之间的...
  • 24 Message Access Profile (MAP) 25 OBject EXchange (OBEX) 26 Object Push Profile (OPP) 27 Personal Area Networking Profile (PAN) 28 Phone Book Access Profile (PBAP, PBA) 29 Proximity Profile (PXP) 30 ...
  • Android 蓝牙开发(五)OPP接收文件

    万次阅读 2017-04-25 20:02:52
    这篇文章主要说一下手机是如何通过蓝牙接收文件的。
  • 最新蓝牙4.2协议

    2015-06-15 13:41:27
    最新蓝牙4.2协议,共2千多页,包括了完整的蓝牙4.2协议
  • 本文章主要讲下蓝牙RFCOMM协议(bluetooth rfcomm)的概念以及在整个蓝牙协议栈中的起的作用 一. 声明 本专栏文章我们会以连载的方式持续更新,本专栏计划更新内容如下: 第一篇:蓝牙综合介绍 ,主要介绍蓝牙的...
  • 蓝牙RFCOMM协议

    2021-01-14 19:15:02
    零. 概述 本文章主要讲下蓝牙RFCOMM协议(bluetooth rfcomm)的帧格式,包括Address,Control,Length Indicator...第二篇:Transport层介绍,主要介绍蓝牙协议栈跟蓝牙芯片之前的硬件传输协议,比如基于UART的H4,H5,BCSP,
  • 蓝牙所有协议规范

    2021-03-03 15:06:36
    蓝牙协议规范:https://www.bluetooth.com/zh-cn/specifications/specs/
  • Android Bluetooth蓝牙开发\蓝牙协议\蓝牙通信例子_Android支持蓝牙4.0版本_BLE开发 一、Android Bluetooth现状 在android官网可以了解到android4.2新增了部分新功能,但是对于BT熟悉的人或许...
  • android 蓝牙 bluetooth OPP文件传输

    千次阅读 2015-12-21 14:47:02
    蓝牙文件分享的流程,也就是蓝牙应用opp目录下的代码,作为蓝牙最基本的一个功能,这部分的代码在之前的版本中就已经有了,新旧版本代码对比很多类名都是一样的,这一部分新东西不多,写在这里帮助大家梳理下流程吧...
  • 蓝牙(三)蓝牙协议的初始化

    千次阅读 2018-04-16 10:45:16
    介绍蓝牙协议的初始化之前首先要简单讲一下蓝牙一些常用协议以及各个协议的作用,同时还要讲以下Application的知识以便对蓝牙协议的初始化有一个更清晰的认识。一、蓝牙协议简介:HSP(手机规格)– 提供手机(移动...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 611
精华内容 244
关键字:

opp协议蓝牙