android蓝牙opp与obex,通过蓝牙通过OBEX Object PushProfile接收文件

我相信我(至少有一部分)的解决方案应该允许通过OPP和自定义代码添加拦截文件。第一步是去设置>应用>运行>蓝牙共享和杀BluetoothOppService

然后我用反射到上BluetoothAdapter(下面的代码),其允许监听特定端口上访问的方法。之后,我们可以拦截传入的OPP通信并与输入和输出流进行交互。 This SO螺纹将与OPP通信部分帮助,但作为一个初始步骤I读出的数据流,并用OPP“OK”消息reponded即os.writeByte(ObexSession.OBEX_SUCCESS | ObexSession.OBEX_FINAL_BIT);

// simplified exception handling

public class BluetoothAdapterProxy

{

public static final int CHANNEL_OPP = 12;

final BluetoothAdapter target;

static final Class> targetClass = BluetoothAdapter.class;

Method listenOn;

public BluetoothAdapterProxy(BluetoothAdapter target)

{

this.target = target;

Class>[] args = new Class[] { int.class };

try

{

this.listenOn = targetClass.getDeclaredMethod(

"listenUsingRfcommOn", args);

}

catch (NoSuchMethodException e)

{

e.printStackTrace();

}

}

public BluetoothServerSocket listenUsingRfcommOn(int channel)

{

try

{

return (BluetoothServerSocket) (listenOn.invoke(target,

new Object[] { channel }));

}

catch (Exception e)

{

// complain loud, complain long

throw new RuntimeException(ex);

}

}

}

用法:初始化使用

serverSocket = new BluetoothAdapterProxy(BluetoothAdapter.getDefaultAdapter())

.listenUsingRfcommOn(BluetoothAdapterProxy.CHANNEL_OPP);

之后,从单独的Thread(以防止阻止)和远程设备可以通过socket = serverSocket.accept();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值