标签: obex

使用蓝牙OBEX对象推送配置文件(OPP)发送文件

有没有办法使用OBEX使用android bluetooth API发送文件?

我需要将文件发送到仅支持OBEX OPP的打印机.

我可以使用android意图ACTION_SEND将文件发送到打印机没有问题,但我需要以编程方式发送它..

我可以使用方法createRfcommSocketToServiceRecord()使用OBEX OPP UUID(1105)连接到蓝牙打印机,但是我应该遵循obex规范使用OBEX发送文件..它不像将字节写入输出套接字那么简单. .

但是如果意图ACTION_SEND可以处理这个问题,为什么开发人员没有任何API发送文件?

我还检查了一些像BlueCove这样的第三方库,但我仍然没有让它工作..(Nexus One和Galaxy Tab抛出异常,说本机库bluecove_armv71不可用..而且LG Optimus One说bluecove_armv61不是不可用..)

我被卡住了,有什么想法吗?

工作解决方案

对于任何试图将文件发送到蓝牙设备而没有运气的人,我使用内容提供商提供了一个有效的解决方案(感谢KPBird):

这里抓取java类BluetoothShare

以下代码将SD卡上的文件发送到蓝牙设备:

BluetoothDevice device;
String filePath = Environment.getExternalStorageDirectory().toString() + "/file.jpg";

ContentValues values = new ContentValues();
values.put(BluetoothShare.URI, Uri.fromFile(new File(filePath)).toString());
values.put(BluetoothShare.DESTINATION, device.getAddress());
values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND);
Long ts = System.currentTimeMillis();
values.put(BluetoothShare.TIMESTAMP, ts);
Uri contentUri = getContentResolver().insert(BluetoothShare.CONTENT_URI, values);
Run Code Online (Sandbox Code Playgroud)

UPDATE

有些人遇到上述解决方案的问题,已经在以下设备上进行了测试:

适用于:

  • LG Optimus One(Android 2.1)
  • HTC Desire(Android 2.2)
  • 谷歌Nexus One(Android 2.2和2.3)
  • 三星Galaxy S2(Android 4.0.3)
  • HTC Amaze(Android 2.3.4)

有问题:

  • LG P500(Android 2.3.3)
  • Galaxy TAB …

android bluetooth file send obex

23
推荐指数
1
解决办法
3万
查看次数

如何在Android中使用蓝牙访问另一部手机的文件系统?

通过蓝牙与手机配对后,是否可以访问SD卡内容(如音乐或图像)?

是否有任何教程或示例代码?

我看到一个名为"蓝牙文件传输"的应用程序,并希望制作另一个像我读到的关于蓝牙,蓝牙插座,但没有找到任何有用的如何执行该操作的东西我正在研究更多,如果我发现我会在这里发布解决方案,如果有人很快发现请在这里发布....谢谢

android bluetooth obex

12
推荐指数
1
解决办法
8万
查看次数

为什么Android在通过蓝牙OPP接收时严格限制可接受的文件类型?

问候stackoverflow.

最近,我正在跟踪Android框架中的蓝牙操作机制.我注意到这个补丁在通过OPP接收文件时会产生一些文件类型限制.

在包中com.android.bluetooth.opp,Constants.java中有一个固定的白名单

/**
 * The MIME type(s) of we could accept from other device.
 * This is in essence a "white list" of acceptable types.
 * Today, restricted to images, audio, video and certain text types.
 */
public static final String[] ACCEPTABLE_SHARE_INBOUND_TYPES = new String[] {
    /* ... some types such as images and music ... */
};
Run Code Online (Sandbox Code Playgroud)

这限制了BluetoothOppObexServerSession.java中可接受的文件类型

        // Reject policy: anything outside the "white list" plus unspecified
        // MIME Types.
        if (!pre_reject
            && …
Run Code Online (Sandbox Code Playgroud)

security android bluetooth obex

8
推荐指数
1
解决办法
2518
查看次数

Android:如何通过蓝牙浏览远程设备文件系统?

我需要构建一个Android应用程序,通过蓝牙从远程设备放入/获取文件; 该应用程序还必须浏览远程文件系统.我已经阅读了一些关于OBEX的内容,但是除了市场上的一些很棒的应用程序之外,我还没有找到任何Android版本的例子.如何在应用程序中实现?

android bluetooth obex

7
推荐指数
2
解决办法
9378
查看次数

通过蓝牙发送多个文件

我看到了你通过蓝牙发送文件的答案.(回答于2011年6月13日5:01)

 Intent i = new Intent(Intent.ACTION_SEND); i.setType("image/jpeg");
 i.putExtra(Intent.EXTRA_STREAM, Uri.parse("/sdcard/file.jpg"));
 startActivity(Intent.createChooser(i, "Send Image"));
Run Code Online (Sandbox Code Playgroud)

是! 有用.它将打开一个默认的蓝牙工具/窗口/对话框来发送文件.但是,请你教我如何发送更多文件?这是我的代码......

 String xFile[3] = { "aa.txt", "bb.txt", "cc.txt" };

 Intent i = new Intent(Intent.ACTION_SEND); i.setType("text/plain");

 for (int i = 0; i < 3; i ++) { 
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(xFile[i]))); 
    startActivity(intent); 
 }
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它将打开默认的蓝牙工具/窗口/对话3次!@@如果有10个文件,它将打开默认的蓝牙工具/窗口/对话框10次!

我可以知道如何打开默认的蓝牙工具/窗口/对话框一次,然后发送所有文件?

非常感谢你提前!

sockets android bluetooth file-transfer obex

6
推荐指数
2
解决办法
3160
查看次数

使用蓝牙打开远程设备文件管理器[Android]

这几天我一直在寻找这个.

目标 - 我需要的是打开通过蓝牙与我的Android设备连接的设备的文件管理器.即从蓝牙连接设备探索文件结构并传输文件.

完成 - 设法通过蓝牙连接到任何设备,并配对它们.

屏障 - 经过几次谷歌搜索[:P]我发现有办法这样做.他们说在OBEX和OPP的帮助下你可以访问蓝牙连接设备的文件.所以我试图在Android上找到OBEX的暗示,不幸的是我无法管理得到帮助OBEX.

所以,现在我在一个问题中遇到很多问题.那是蓝牙连接设备的资源管理器文件的任何方式.我是对的,OBEX是唯一的方法吗?是否有任何有用的文档/教程,有助于在Android中实现OBEX?

android bluetooth file-transfer obex

6
推荐指数
1
解决办法
2655
查看次数

如何在android上以编程方式使用蓝牙发送文件?

我需要将文件发送到计算机而不是另一个Android应用程序.我看过蓝牙api,但它只允许连接作为客户端 - 服务器.在我的情况下,我不知道UUId将在计算机上.我需要看看obex吗?我之前没用过它.所以任何帮助都是有益的.

sockets android bluetooth obex

5
推荐指数
1
解决办法
2万
查看次数

谁能用写模式解释我 popen()

在这里我想执行一个命令,我必须在执行第一个命令后输入这个命令。

我想obex_test为蓝牙模式执行命令,而不是在我必须为启动服务器提供像“s”这样的输入之后,我该如何提供这个东西。这是我的代码,我写了这个东西并得到了输出。执行obex_test命令后我收到输入数据错误。

代码:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>

void main() {

    char *input = "obex_test -b";   
    FILE *fp = NULL;
    char path[512];


    fp = popen(input, "w");

    if (fp == NULL) 
    {
        printf("\nFailed command\n");
        return;
    }
    else
    {
        printf("\nSuccesss command\n");
    }
    printf("starting while : %d", fp);

    while (fgets(path, sizeof(path) - 1, fp) != NULL) {

        printf("\nOutput    :::  %s \n", path);
    }

    printf("\nEnd\n");
    /* close */
    pclose(fp);

}
Run Code Online (Sandbox Code Playgroud)

输出 :

Successs command
starting while : …
Run Code Online (Sandbox Code Playgroud)

c bluetooth popen obex

5
推荐指数
1
解决办法
7017
查看次数

如何在J2ME蓝牙OBEX中实现ACTION(移动/重命名,设置权限)操作?

蓝牙FTP规范说我需要使用ACTION操作,这是一个页面 http://i47.tinypic.com/2425t2v.png

但是ClentSession只提供GET和PUT操作,而javadocs中没有提到任何内容.

这是创建文件操作的外观,非常简单

    public void create() throws IOException {
        HeaderSet hs = cs.createHeaderSet();
        hs.setHeader(HeaderSet.NAME, file);
        op = cs.put(hs);
        OutputStream os = op.openOutputStream();
        os.close();
        op.close();
    }
Run Code Online (Sandbox Code Playgroud)

问题1:如何使用自定义标头实施ACTION操作以执行移动/重命名和设置权限?没有JSR82 OBEX API就应该可以.请帮我这样做.

问题2:我是否了解如何设置权限?根据OBEX_Errata Compiled For 1.3.pdf(感谢alanjmcf!)

1 http://i45.tinypic.com/2h84led.jpg

2 http://i49.tinypic.com/2wgysmx.png

因此,要设置只读,我应该执行以下操作:

    int a = 0;

    //byte 0 //zero
    //byte 1 //user
    //byte 2 //group
    //byte 3 //other

    //set read for user
    a |= (1 << 7); //8th bit - byte 1, bit 0 -> set to 1
    // a = 10000000 …
Run Code Online (Sandbox Code Playgroud)

bluetooth java-me jsr82 obex

5
推荐指数
1
解决办法
481
查看次数

通过OBEX Object PushProfile通过蓝牙接收文件

我有使用OBEX Object Push Profile(OPP)通过蓝牙发送数据的设备.

使用adb logcat我看到我的android设备收到连接(但是中止了这个连接?)

08-22 11:14:37.939: I/BtOppRfcommListener(22586): Accepted connectoin from 00:07:CF:5F:52:A0
08-22 11:14:37.939: I/BtOpp Service(22586): Start Obex Server
08-22 11:14:38.109: D/Obex ServerSession(22586): java.io.IOException: Software caused connection abort
08-22 11:14:38.109: D/PowerManagerService(180): @PowerManagement: 'BtOppObexServer' releaseWakeLock when screen locked
08-22 11:14:39.219: D/BluetoothEventLoop(180): Device property changed: 00:07:CF:5F:52:A0 property: Connected value: false
Run Code Online (Sandbox Code Playgroud)

当我安装蓝牙文件传输(市场上的免费应用程序),然后我就能够接收文件.但我不想安装其他应用程序.

android bluetooth obex

5
推荐指数
1
解决办法
5056
查看次数

标签 统计

bluetooth ×10

obex ×10

android ×8

file-transfer ×2

sockets ×2

c ×1

file ×1

java-me ×1

jsr82 ×1

popen ×1

security ×1

send ×1