如何通过蓝牙将文件从Android发送到电脑

2024-04-06

任何人都可以给出蓝牙服务器客户端的工作示例(从Android到计算机)?

我想将数据从 Android 手机传输到 C# 应用程序。现在我使用下面的 Android 代码,效果很好,但它仍然无法将数据传输到我的计算机(可能无法写入这些数据)。

任何人都可以建议一些应该成功地将消息或文件从客户端 Android 传输到服务器 PC 的代码吗?

Button btnSend = null;
TextView txtPath = null;
Socket s = null;
BluetoothAdapter objBluetoothAdapter = null;
BluetoothDevice device = null;
BluetoothSocket socket = null;
String strPath = "/sdcard/bluetooth/IMG0245A.jpg";
byte [] buffer = null;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

btnSend = (Button)findViewById(R.id.send_button);
btnSend.setOnClickListener(this);
}
   @Override public void onClick(View arg0) {
    // TODO Auto-generated method stub

    String address="MY_COMPUTER_BLUETOOTH_ADDRESS";

    objBluetoothAdapter =  BluetoothAdapter.getDefaultAdapter();
    if(objBluetoothAdapter==null){
            Toast.makeText(this, "BT not supported", Toast.LENGTH_LONG);
            return;
    }

    //objBluetoothAdapter.enable();

    if(!objBluetoothAdapter.isEnabled()){
            Intent enableBT = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
            startActivity(enableBT);
    }
    try{
            device = objBluetoothAdapter.getRemoteDevice(address);

            final UUID uuid= UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");

            try{
                    File f = new File(strPath);
                    buffer = new byte[(int)f.length()];
                    FileInputStream fis = new FileInputStream(f);
                    BufferedInputStream bis = new BufferedInputStream(fis);
                    bis.read(buffer,0,(int)f.length());

                    socket = device.createRfcommSocketToServiceRecord(uuid);
                    Log.d("BT","RF Connection Created"+socket);
                    //objBluetoothAdapter.startDiscovery();
                    for(int i=0;i<3;i++){
                            try{

                                    objBluetoothAdapter.cancelDiscovery();
                                    socket.connect();
                                    Log.d("BT","Socket Connected = "+socket);

                                    break;
                            }catch (Exception e) {
                                    // TODO: handle exception
                                    Log.d("BT","Socket Connection exception = "+e);
                            }
                    }
            }catch (Exception e) {
                    // TODO: handle exception
                    e.printStackTrace();
                    Log.d("BT","Connection NOT OK");
            }

            OutputStream os = socket.getOutputStream();
            os.write(buffer);//,0,buffer.length);
            os.flush();
            os.close();
            socket.close();

    } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(this,"exception "+e, Toast.LENGTH_LONG);

这是我的一些 C# 代码。我使用 32feet 库

ObexListenerContext olContexet = obxlistener.GetContext();
ObexListenerRequest olRequest = olContexet.Request;
String[] pathSplits = olRequest.RawUrl.Split('/');
String filename = pathSplits[pathSplits.Length - 1];
olRequest.WriteFile(Path.GetFullPath(Application.StartupPath) + "\\" + filename);

当我从 android 的蓝牙发送文件时,此代码运行良好,但是当我尝试从 android 代码发送文件时,obxlistener.GetContext() 返回 null 值!

谢谢你的帮助


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过蓝牙将文件从Android发送到电脑 的相关文章

  • Java 反射:如何检索匿名内部类?

    我在另一个类中有一个匿名内部类 SomeClass Both SomeClass class getClasses and SomeClass class getDeclaredClasses 返回空数组 我在中找不到一些关于此的提示Cla
  • 在 JavaFX 中拖动未装饰的舞台

    我希望将舞台设置为 未装饰 使其可拖动且可最小化 问题是我找不到这样做的方法 因为我遇到的示例是通过插入到主方法中的方法来实现的 我想通过控制器类中声明的方法来完成此操作 就像我如何使用下面的 WindowClose 方法来完成此操作 这是
  • 在 Facebook 上分享文本和 URL

    我想分享一条消息 例如 查看图片http someUrl com http someUrl com从应用程序共享ABCapp 用户必须能够选择任何已安装的应用程序进行共享 我正在使用以下代码 Intent intent new Intent
  • perl 和 java 正则表达式功能之间有什么区别?

    perl 和 java 在支持哪些正则表达式术语方面有什么区别 这个问题仅涉及正则表达式 并且特别排除了how可以使用正则表达式 即使用正则表达式的可用函数 方法 以及语言之间的语法差异 例如java要求转义反斜杠等 特别令人感兴趣的是 j
  • 驱动程序信息:driver.version:未知,使用 ChromeDriver v78.0.3904.70 和 Chrome 浏览器 v78.0.3904.97

    我使用的是java 1 8和chrome浏览器版本78 0 3904 97 我正在尝试使用 chrome 驱动程序版本执行我的 selenium 脚本代码78 0 3904 70 但在执行时我面临以下问题并且 chrome 立即崩溃 Pic
  • activemq 的优先级

    我们目前正在使用 JMS 和 activemq 5 5 1 开发一个应用程序 我们想为某些消息定义更高的优先级 这将使它们首先被消耗 设置生产者和消费者后 通过spring 3 1 JMSTemplate 优先级并不能完全发挥作用 事实上
  • 文本转语音无法在 Android 设备上运行

    下面是我的代码 我无法在 Kitkat 设备中听到声音 Toast 出现 但声音没有播放 我正在遵循本教程 https www tutorialspoint com android android text to speech htm ht
  • 使用 Java 通过 HTTP 下载未知长度的文件

    我想用java下载一个HTTP查询 但是我下载的文件在下载时有一个未确定的长度 我认为这将是相当标准的 所以我搜索并找到了它的代码片段 http snipplr com view 33805 http snipplr com view 33
  • Akka 和 spring 配置

    我正在尝试将 akka 与 spring 结合起来 但没有成功 基本上 我的应用程序似乎不习惯读取 akka 模式 具有架构的 service context xml 的一部分
  • 使用链接列表插入优先级队列的方法

    首先 我觉得我应该提到这是一项作业 我并不是在寻找直接的代码答案 只是为了指出正确的方向 我们被要求在链表中实现优先级队列 我正在努力编写 insert 函数的第一部分 在代码中我尝试检查是否head包含任何内容 如果没有则设置为head
  • 如何告诉 IntelliJ 使用 Java 1.6 JDK 启动 gradle?

    一个简单的问题 即使经过几个小时的尝试和搜索 我也无法弄清楚 我安装了 Java 6 和 7 如何告诉 IntelliJ 使用 JDK 版本 1 6 启动 Gradle 构建 无论我做什么 IntelliJ 都会以以下方式开始我的 grad
  • 如果没有按钮,Espresso 不会记录任何意图

    我正在尝试编写一个测试来验证使用浓缩咖啡启动的意图 问题是有意的 不记录任何意图 我有这个测试 Test public void shoulddosomething startActivity intended hasComponent h
  • proguard 导致 Google Play 服务的 ActivityRecognitionResult getMostProbableActivity 崩溃

    我最近向 Play 商店发布了一个应用程序 虽然它在没有 proguard 的情况下运行得很好 但当我决定使用它时 我遇到了意外的崩溃 我看过here http developer android com google play servi
  • Android 中的垂直(旋转)标签

    我需要两种在 Android 中显示垂直标签的方法 水平标签逆时针旋转 90 度 字母在侧面 带有字母的水平标签 如商店招牌 我是否需要为这两种情况 一种情况 开发自定义小部件 我可以使 TextView 以这种方式呈现吗 如果我需要完全自
  • Drools:为什么是无状态会话?

    Drools 使用会话来存储运行时数据 为此 有两种会话 无状态和有状态 与无状态会话相比 有状态会话允许迭代调用 并且似乎比无状态会话具有所有优势 那么为什么会有无状态会话呢 他们服务的目的是什么 与有状态会话相比 它们的优势是什么 谢谢
  • Android 2.2 中不带预览的相机捕获

    我需要捕获图像而不显示预览 我想在后台作为服务来完成它 可以这样做吗 是有可能实现的 您应该定义一个处理 Camera 对象的类 例如调用 Camera open 等 不要为相机对象提供以下行以禁用预览 mCamera setPreview
  • 如何隐藏或删除 Android HoneyComb 中的状态栏?

    如何隐藏或删除 Android HoneyComb 中的状态栏 每次运行应用程序时 我都会发现某些内容必须被状态栏覆盖 我尝试改变AndroidManifest xml 但没有任何改变 你不知道 它被认为是永久的屏幕装饰 就像电容式主页 菜
  • 在 Android Studio 中打开上次关闭的选项卡

    我是 Android Studio 的新手 想知道是否有任何快捷方式 选项可以重新打开上次关闭的选项卡 没有分配快捷方式 但您可以轻松分配新的快捷方式 Go to IDE settings Keymap Main menu Window E
  • 在另一个布局中以编程方式膨胀布局

    我的 Android 应用程序需要帮助 我需要在另一个布局中膨胀一个布局 但我不知道该怎么做 我的xml代码是这样的 item xml 我需要膨胀多个 xml 取决于可变数量
  • 线程“main”中出现异常 java.lang.UnsatisfiedLinkError: ... \jzmq.dll: 找不到依赖库

    我有一个使用 ZMQ 的 java 应用程序 我已经能够在我的 Win7 PC 上运行它 我将 jzmq dll 放在 jar 可执行文件所在的同一文件夹中 然后通过命令 java jar myapp jar 运行它 我的下一步是将其移至服

随机推荐

  • watchOS 3 SpriteKit 中的触摸事件?

    在watchOS 3中使用SpriteKit时 如何处理触摸事件 我正在从 iOS 移植 SpriteKit 游戏 下面的代码不起作用 或者你必须以某种方式控制 WKInterfaceController override func tou
  • Apache 上 Django 应用程序的 POST/GET 请求日志

    Django 开发服务器非常好 它实时显示所有 POST GET 请求以及其他事件的日志 来自 Django 开发服务器的日志示例 04 Jul 2012 19 23 27 GET static images sprites submit
  • 根据所选单选按钮显示控件

    我有一组三个单选按钮 根据选择的单选按钮 我想显示三个控件之一 文本框 下拉列表或按钮 如何根据所选单选按钮的结果显示控件 您可以使用以下方法将控件的可见性绑定到 RadioButton 的 IsChecked 属性 BooleanToVi
  • 如何在 Android 中暂停和恢复录音

    我正在使用 MediaRecorder 类开发音频录制应用程序 我有以下要求 1 按下暂停按钮则暂停录音 2 按下恢复按钮后 从暂停处恢复录制 我试试这个link https stackoverflow com questions 5743
  • 使累计总和更快

    我正在尝试计算矩阵每一列的累积和 这是我的 R 代码 testMatrix matrix 1 65536 ncol 256 microbenchmark apply testMatrix 2 cumsum times 100L Unit m
  • C++ for every in 自定义集合

    所以自从它推出以来我就一直很喜欢for each在要迭代的关键字中STL collections 我是语法糖的超级粉丝 我的问题是如何编写可以使用这些关键字迭代的自定义集合 本质上 我需要公开什么 APi 才能使用这些关键字来迭代我的集合
  • 设置分层绘图的大小?

    我正在为我的应用程序制作一个图标 该应用程序基本上是一个朋友查找器 我正在创建一个看起来很像谷歌纬度图标的叠加层 我有一个因用户而变化的图像 并且我有边框 我已经能够很好地进行分层绘制和叠加 但问题是 图像拉伸到边框的大小 这是一个问题 因
  • 当应用程序进入后台时如何停止运行?

    我正在尝试建立一个可运行的程序 它可以每 5 秒间隔加载一次广告 当然 5 秒太快了 这只是为了测试目的 这是我的代码 package com admobsdk dfp handler import com google ads impor
  • 正则表达式从路径中删除文件名

    如何设计一个 RegEx 脚本来从路径中删除文件名 诀窍在于 道路上有各种各样的扳手需要投入工作 路径可以包括 1 Folder1 Folder2 Folder3 1234 folder4 5678 ApplesandOranges txt
  • 构造函数不能是虚拟的

    在其中之一互联网上的 C 教程 http www bogotobogo com cplusplus constructor php 我发现了下面关于为什么构造函数不能是虚拟的描述 我们不能声明虚拟构造函数 我们应该指定准确的 编译时对象的类
  • Leaflet R 大地图的性能问题

    我想知道是否有其他人在使用 R 中的传单包绘制大量标记和多边形时遇到类似的问题 这通常应该是这样的 但是 当我放大 缩小地图时 多边形和标记显然不合适 或者您可以说底图没有正确调整 下面包含一个示例 当我绘制较小的区域或几个标记时 我不会遇
  • Typescript 事件监听器 - 类型到 props 映射

    export enum GameEventType EVENT ONE event one EVENT TWO event two EVENT THREE event three export type GameEvent type Gam
  • 如何通过另一个 DLL 访问一个 DLL 中的命名空间?

    我有多个 DLL 我自己管理或我自己不管理 我想将它们包含在 CoreLib dll 中 这样我就不必在每个使用这些 DLL 的应用程序中包含 可能 数百个 DLL 我通过直接引用 DLL 来包含 DLL 因此 我还想在我正在创建的应用程序
  • 局部变量初始化应该是强制的吗?

    未初始化的本地变量 特别是指针 引起的维护问题对于 任何做过一些 c c 维护或增强的人来说都是显而易见的 但我仍然看到它们 并且偶尔会听到作为其理由的性能影响 在 c 中很容易证明冗余初始化已被优化 less test c include
  • 刷新 Visual Studio Code 文件列表

    Visual Studio Code 版本 0 10 11 在 OSX 上 不会刷新文件夹中的文件 有什么办法可以强制刷新吗 目前我必须关闭并重新打开整个程序 编辑 与此同时 重新加载按钮已添加到文件资源管理器小部件中 Use the wo
  • Spring/JPA/JSF 的异常处理策略

    我们在我们的应用程序中使用 JSF Spring 和 JPA 我们正在尝试简化项目的异常处理策略 我们的应用程序架构如下 UI JSF gt 托管 Bean gt 服务 gt DAO 我们正在为 DAO 层使用异常翻译 bean 后处理器
  • VSCode 运行 Python 2 而不是 3

    我在 VSCode 中使用 Python 如果我使用 Cmd Shift P 并输入 Run Code 它会使用 Python2 运行代码 即使我已指定它使用 Python3 我已阅读本教程 如何强制 VSCode 使用 Python 3
  • 相当于Java 8日期和时间API中的jodatime间隔[重复]

    这个问题在这里已经有答案了 Java 8 处理时间的方式似乎已经改进了很多 以至于我开始考虑替换jodatime http www joda org joda time 在某些情况下 但我缺少的是相当于Interval http www j
  • 计算第一个数字相似的所有元组值的平均值

    考虑元组列表 7751 0 9407466053962708 6631 0 03942129 7751 0 1235432 如何以Python方式计算所有元组值的平均值 其中第一个数字相似 例如答案必须是 7751 0 5321449026
  • 如何通过蓝牙将文件从Android发送到电脑

    任何人都可以给出蓝牙服务器客户端的工作示例 从Android到计算机 我想将数据从 Android 手机传输到 C 应用程序 现在我使用下面的 Android 代码 效果很好 但它仍然无法将数据传输到我的计算机 可能无法写入这些数据 任何人