Dear Indicator Veritatis :
Thanks for your reply.
I had coed 2 android API to pass the data from a BT Client to BT Server
through the Bluetooth.
It works.
Now I want to pass the data from the BT client to a non-android server (for
example, windows 7 server). So I try to use the hyperterminal to receive &
display the data.
My ckient code is simple. Could you help me to check? Thanks.
package tw.android.test.BTClient;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.util.UUID;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
public class BTClient extends Activity {
private BluetoothAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
adapter = BluetoothAdapter.getDefaultAdapter();
if (!adapter.isEnabled()){
Intent intent = new
Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, 2);
if (!adapter.enable()) finish();
}
// 遠端藍牙的 MAC
new
ClientThread(adapter.getRemoteDevice("00:11:94:1A:0D:51")).start();
}
private class ClientThread extends Thread {
private final BluetoothSocket mmSocket;
private final BluetoothDevice mmDevice;
public ClientThread(BluetoothDevice device) {
BluetoothSocket tmp = null;
mmDevice = device;
try {
tmp =
device.createRfcommSocketToServiceRecord(UUID.fromString("fa87c0d0-afac-11de-8a39-0800200c9a66"));
} catch (IOException e) { }
mmSocket = tmp;
}
public void run() {
adapter.cancelDiscovery();
try {
Log.i("BTClient", "start to connect");
mmSocket.connect();
Log.i("BTClient", "connecting");
BufferedOutputStream bout = new
BufferedOutputStream(mmSocket.getOutputStream());
bout.write("1234567再測試一下".getBytes());
bout.flush();
bout.close();
bout = null;
Log.i("BTClient", "connectless");
} catch (IOException connectException) {
Log.i("BTClient", "not connect");
try {
mmSocket.close();
} catch (IOException closeException) { }
return;
}
}
public void cancel() {
try {
mmSocket.close();
} catch (IOException e) { }
}
}
}
Thanks.
BR,
Mark
2011/6/28 Indicator Veritatis <[email protected]>
> You have not posted quite enough information for us to be sure we can
> help you. Can I assume, for example, that your variable 'Socket' is a
> BluetoothSocket? Why have you not followed any of the coding standards
> for the name, then? The Sun standards, and many others, all call for
> class names to start with capital letters, but object and primitive
> variables names to start with lower case. If you want people to be
> able to help you, make our job easier: follow the standards so that we
> can read the code without more effort than we feel helping you is
> worth.
>
> For that matter, how do we know you did not implement it as
> BluetoothServerSocket? This too, is an example of insufficient
> information.
>
> For my final example of insufficient information, what did you do in
> between the "first time" and the second? Did you call run() again? How
> do you determine when it is time to call run() again? You will need to
> do this to talk to the remote device again, since you closed not only
> the BufferedOutputStream, but even the BluetoothSocket (assuming that
> is what 'Socket' really is).
>
> BTW: how did you decide that you have to close the socket itself
> rather than just the output stream? Have you considered leaving the
> socket connected? Look at
>
> http://developer.android.com/resources/samples/BluetoothChat/src/com/example/android/BluetoothChat/BluetoothChat.html
> and see how it does it.
>
> On Jun 27, 2:48 am, mark2011 <[email protected]> wrote:
> > Dear All :
> >
> > I'm a new to Android.
> >
> > I try to code a client API to allow the user to input some data in
> > an android 2.1 to send out through the bluetooth. The hyperterminal
> > can displays the received data in a Windows pc in the first time. But
> > When I input data the second time from the Android, the pc can't
> > receive the data any more.
> >
> > My code is the below :
> > public void run() {
> > adapter.cancelDiscovery();
> >
> > try {
> > Socket.connect();
> > BufferedOutputStream bout = new
> > BufferedOutputStream(Socket.getOutputStream());
> > bout.write(str1.getBytes());
> >
> > bout.flush();
> > bout.close();
> > } catch (IOException connectException) {
> > Log.i("BT Client", "not connect");
> > try {
> > Socket.close();
> > } catch (IOException closeException) { }
> > return;
> > }
> > }
> >
> > Can anyone help me?
> >
> > Thanks in advanced.
> >
> > BR,
> > Mark
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en