1

私はAndroid携帯用のサーバーとして機能するc#でアプリケーションを開発しようとしています.c#でBluetooth用に32feet.netを使用していて、Androidでサーバーを実行していて、サーバーにソケットを送信するだけです。PCで実行されているサーバーは、接続をリッスンし、接続のステータスを表示する必要があります。これらすべてが私のプロジェクトの基盤です。サーバーコードは次のとおりです。

namespace testserver
{
class Program
{

    static void Main(string[] args)
    {

        BluetoothClient bc = new BluetoothClient();
        BluetoothDeviceInfo[] dev;
        BluetoothDeviceInfo td=null;
        Guid id = new Guid("{00112233-4455-6677-8899-aabbccddeeff}");
      //  Console.WriteLine(id.ToString());
       // Console.Read();
        dev = bc.DiscoverDevices();
        foreach (BluetoothDeviceInfo d in dev)
        {
            if (d.DeviceName == "ST21i")//my phone name
            {
                td=d;
                break;
            }
        }
        try
        {

            BluetoothAddress addr = td.DeviceAddress;
            BluetoothListener bl = new BluetoothListener(addr, id);
            bl.Start();
            if (bl.AcceptSocket() != null)
                Console.WriteLine("Success");
        }
        catch (Exception e)
        {
            Console.WriteLine("Exception : "+e.Message);
            Console.Read();
        }


    }
}

}

そしてここに私のアンドロイドコードがあります:

public class MainActivity extends Activity {


 BluetoothAdapter adapter;
     BluetoothDevice bd;
BluetoothSocket sock;
OutputStream ostr;
int REQUEST_ENABLE_BT;
String str="5C:AC:4C:DD:CC:0D";

private static final UUID id=UUID.fromString("00112233-4455-6677-8899-         aabbccddeeff");
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    adapter=BluetoothAdapter.getDefaultAdapter();

   if (!adapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
    }


    Button b = (Button) findViewById(R.id.button1);
    b.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
 Toast.makeText(getApplicationContext(), "clicked button",            Toast.LENGTH_LONG).show();
    try
    { 
        bd=adapter.getRemoteDevice(str);                      Toast.makeText(getApplicationContext(),"Server is    running at   "+bd.getName().toString()+"...", Toast.LENGTH_LONG).show();
                   sock=bd.createInsecureRfcommSocketToServiceRecord(id);                    sock.connect();
                ostr=sock.getOutputStream();
                ostr.write(0);
            }
            catch(Exception e)
            {
                 Toast.makeText(getApplicationContext(),e.getMessage(), Toast.LENGTH_LONG).show();
            }
        }
    });

}

}

私の問題は:

1)PCで例外が発生し、要求されたアドレスがそのコンテキストで有効ではない(サーバーが実行できないようにする)2)電話で、サービス検出が失敗した(サーバーが使用できないため)

サーバーを修正してプログラムを実行するにはどうすればよいですか?

4

1 に答える 1

1

Bluetoothリスナーオブジェクトの作成をから BluetoothListener bl = new BluetoothListener(addr, id);に 変更しましたがBluetoothListener bl = new BluetoothListener(id);、すべて正常に機能しました。

于 2013-02-17T06:20:03.727 に答える