首先......不要将我重定向到蓝牙聊天,我已经完全阅读了它.
我有一个Android客户端,可以正确地与服务器建立连接,我可以将最多的文本发送到我的电脑中的服务器并正确显示,但我不能做相反的操作,从服务器发送一个简单的字符串客户端并在我的Android应用程序中显示它.
我不想实现聊天只是为了展示如何在Java服务器和Android客户端之间进行BT通信.
为了方便起见:
我在服务器类的startServer()方法的末尾发送文本.
我尝试在onPause()开头从服务器读取文本.
**
**.
代码如下:
Android BT客户端:
/*...libraries here...*/
public class ConnectTest extends Activity {
TextView out;
private static final int REQUEST_ENABLE_BT = 1;
private BluetoothAdapter btAdapter = null;
private BluetoothSocket btSocket = null;
private OutputStream outStream = null;
// Well known SPP UUID
private static final UUID MY_UUID =
UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
// Insert your server's MAC address
private static String address = "00:10:60:AA:B9:B2";
/** Called when the activity is first created. */
public void onCreate(Bundle …Run Code Online (Sandbox Code Playgroud) 我需要通过蓝牙将字符串从PC传输到Android移动设备来获得帮助.Android移动设备应充当服务器并在设备屏幕上显示字符串消息.作为客户端的PC应该将字符串发送到移动设备.
我希望服务器对提取的字符串做出反应(通过蓝牙传输).这意味着在一侧服务器总是必须监听新的字符串到达,但另一方面仍然必须能够对这些消息作出反应(例如,从一个菜单导航到另一个菜单).
我尝试使用BlueCove(2.1.1)作为BluetoothStack(我将BlueCove中的jar作为库添加到两个项目中)并结合我在此处找到的服务器 - 客户端通信示例.
感谢user_CC使用RFComm服务器连接从服务器更新了代码:
public class RFCommServer extends Thread{
//based on java.util.UUID
private static UUID MY_UUID = UUID.fromString("446118f0-8b1e-11e2-9e96-0800200c9a66");
// The local server socket
private BluetoothServerSocket mmServerSocket;
// based on android.bluetooth.BluetoothAdapter
private BluetoothAdapter mAdapter;
private BluetoothDevice remoteDevice;
private Activity activity;
public RFCommServer(Activity activity) {
this.activity = activity;
}
public void run() {
BluetoothSocket socket = null;
mAdapter = BluetoothAdapter.getDefaultAdapter();
// Listen to the server socket if we're not connected
while (true) { …Run Code Online (Sandbox Code Playgroud) 我尝试使用以下代码来发现蓝牙设备
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Vector;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
/**
*
* Class that discovers all bluetooth devices in the neighbourhood,
*
* Connects to the chosen device and checks for the presence of OBEX push service in it.
* and displays their name and bluetooth address.
*
*
*/
public class BluetoothServiceDiscovery implements DiscoveryListener{
//object used for waiting
private static Object lock=new Object();
//vector containing …Run Code Online (Sandbox Code Playgroud) 我正在尝试将来自android的数据(使用其SDK中的API)发送到使用Windows上的Bluecove的PC,这是最后一个服务器.
我可以让android连接到服务器但是当我写入套接字的输出流时,服务器上没有任何反应.我有onPut方法覆盖但它从未被调用.
代码如下,如果有人可以帮助我,我将非常感激:
Android的
public class BluetoothWorker {
private static UUID generalUuid = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
private static BluetoothSocket socket;
private static BluetoothSocket getBluetoothSocket(){
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
mBluetoothAdapter.cancelDiscovery();
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
// If there are paired devices
if (pairedDevices.size() > 0) {
// Loop through paired devices
for (BluetoothDevice device : pairedDevices) {
// Add the name and address to an array adapter to show in a ListView
if(device.getName().equalsIgnoreCase(("MIGUEL-PC"))){
try {
return device.createRfcommSocketToServiceRecord(generalUuid);
} catch (IOException e) {
return null; …Run Code Online (Sandbox Code Playgroud) 我是蓝牙的新手,这是我想做的事情,我想获得连接到我的电脑上的蓝牙的设备信息,并将信息写入文件.我应该使用哪种api以及如何实现.我遇到了蓝鸟,但在几次搜索中我发现蓝色的巧克力在64位电脑上不起作用.我现在应该怎么做.我希望这可以在32位和64位PC上工作.
Thankx
我试图通过一个简单的应用程序获得使用蓝牙的基础知识.我也喜欢笔记本电脑应用程序,所以我可以简单地调试蓝牙通信.下面的代码是我尝试将笔记本电脑作为客户端(使用BlueCove 2.1.0)而平板电脑作为服务器(Android 2.2).
根据我的理解,这应该按照书面形式工作,而笔记本电脑正在提供平板电脑及其提供的服务.但是,该行"StreamConnection conn = (StreamConnection) Connector.open(url, Connector.READ_WRITE);"每次都返回null.
任何想法都出了什么问题?以下是代码的输出:
winsock上的BlueCove版本2.1.0
地址:68A3C44A5265
名称:WS1497
启动设备查询...
发现设备:2013E061D922
发现设备:00242BFE7375
INQUIRY_COMPLETED
设备查询已完成.
服务咨询开始.
来自:Galaxy Tab
服务搜索已完成 - 代码:1
来自:WS1190
服务搜索已完成 - 代码:4
蓝牙设备:
1.2013E061D922(Galaxy Tab)
2.00242BFE7375(WS1190)
btspp:// 2013E061D922:20; authenticate = false;加密= false; master = false ---- = null MainClass.main
中的线程"main"java.lang.NullPointerException
异常(
MainClass.java:104)BlueCove堆栈关闭完成
这是我正在使用的代码:
笔记本代码:
import java.io.DataInputStream;
import java.io.IOException;
import java.util.Vector;
import javax.bluetooth.DeviceClass;
import javax.bluetooth.DiscoveryAgent;
import javax.bluetooth.DiscoveryListener;
import javax.bluetooth.LocalDevice;
import javax.bluetooth.RemoteDevice;
import javax.bluetooth.ServiceRecord;
import javax.bluetooth.UUID;
import javax.microedition.io.Connector;
import javax.microedition.io.StreamConnection;
public class MainClass implements …Run Code Online (Sandbox Code Playgroud) 我正在使用Bluecove API为我的计算机构建一个简单的Java蓝牙服务器.我正在构建一个Android客户端应用程序,但问题似乎源于服务器端应用程序.
我确定有人已经在某处发布了任何答案,过去几天我已经严格尝试了不同的解决方案并查看了所有可能的论坛,但我似乎无法保持套接字线程上的连接.
我可以在从android到计算机建立连接之后交换消息,反之亦然,从计算机到android,但是在交换字节后,Bluecove堆栈关闭并关闭套接字连接,即使我没有明确告诉它connection.close()时.
我试图使用一段时间(某些陈述是真的)循环来保持连接活动,它不再在收到第一条消息后关闭套接字但它无法接收我从智能手机发送到我的计算机的任何后续消息无论是.虽然它基本上是活着的,但当我尝试从智能手机发送它们时,它无法接收任何新消息.不知道为什么.
对不起,这是我第一次发帖,我不确定为什么代码的第一部分无法在页面上正确显示.
代码连接:
public BluetoothServer()
{
try
{
service = (StreamConnectionNotifier)
Connector.open("btspp://localhost:" + new UUID(0x1101).toString() +
";name=SampleServer");
System.out.println("open connection");
while(runState == true){
connection = (StreamConnection) service.acceptAndOpen();
//send a greeting across to android
outputStream = connection.openOutputStream();
String greeting = "JSR-82 RFCOMM server says hello";
outputStream.write(greeting.getBytes());
//run thread that listens for incoming bytes through socket connection
Thread t = new Thread(new ConnectedThread(connection));
t.start();
}
} catch(IOException e) {}
}
Run Code Online (Sandbox Code Playgroud)
用于收听数据的线程代码
public void run()
{
try
{
//open input …Run Code Online (Sandbox Code Playgroud) 我是蓝牙的初学者.我正在尝试使用Bluecove和Java.我想与已经连接/配对到我的计算机的设备进行通信(例如检索设备电池电量).问题是我找不到连接的设备.
我知道我可以拥有本地设备,检索设备等,但我无法连接设备.我正在使用此处找到的代码.
如果需要,我准备尝试另一个库.
在BluetoothDevices.java中:
import javax.swing.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BluetoothDevices extends javax.swing.JFrame {
/* DefaultListModel to attach it with JList */
private DefaultListModel defaultModel;
/* Map to get device details list */
private Map<String, List<String>> mapReturnResult = new HashMap<String, List<String>>();
/* Map to identify device on user click of JList */
private Map<Integer, List<String>> mapDevicePosition = new HashMap<Integer, List<String>>();
public BluetoothDevices() {
initComponents();
defaultModel = new DefaultListModel();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated …Run Code Online (Sandbox Code Playgroud) 我想在我的MacBook Air笔记本电脑上实现一个使用蓝牙的Java应用程序.我尝试使用Java蓝牙库BlueCove.
我试图实现第一个示例DeviceDiscovery,但它会抛出一条BluetoothStateException消息:BlueCove library bluecove not available.我已经bluecove-2.1.0.jar在Eclipse中添加了我的Build Path.
问题是什么?如何在MacBook Air中使用BlueCove?
我有两个Android设备.一个充当服务器,另一个充当客户端.客户端连接到服务器并请求文件 - 这是在客户端上的一个线程和服务器上的一个线程上完成的,这样两者都可以继续执行他们想要的操作.
然后,客户端再次尝试连接到服务器以请求另一个文件.现在我java.io.IOException: Device or resource busy在尝试连接(socket.connect())时得到了一个.是因为蓝牙(在Android上)只允许两个设备之间的一个通道?(如果它是另一个设备它会工作,但如果它是相同的,它不会?)请注意,两个尝试都使用相同的服务名称和UUID.
即使错误特定于我的代码,我想知道是否是这种情况.
系统: android 2.2.1与bluecove蓝牙库进行通信.
bluecove ×10
bluetooth ×10
java ×8
android ×5
macos ×2
32bit-64bit ×1
connection ×1
inputstream ×1
jsr82 ×1
sockets ×1