Форум программистов, компьютерный форум CyberForum.ru

Снова Bluetooth - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.83
Maksim2309
45 / 45 / 2
Регистрация: 17.01.2013
Сообщений: 328
05.10.2013, 16:44     Снова Bluetooth #1
Здравствуйте. Подскажите пожалуйста почему к простой нокии х2 например подключаюсь запросто, а к Android`у или к ПК не могу ошибка вылазиет. Вот код подозреваю из-за UUID, но фиг его знает
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
package com.example.conpc;
 
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;
 
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.widget.CompoundButton;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.bluetooth.*;
import android.content.Intent;
 
public class MainActivity extends Activity {
    
    ToggleButton btn;
    BluetoothAdapter btAdapter = null;
        // Ни так ни так не работает
    public static UUID My_UUID = UUID.randomUUID();//UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
    public static String adress = "F4:E5:43:34:67:A3";
    BluetoothSocket mSocket = null;
    private static final String TAG = "bluetooth1";
    private OutputStream outStream = null;  
    private static final int REQUEST_ENABLE_BT = 1;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (ToggleButton) findViewById(R.id.btn_en);
        btAdapter = BluetoothAdapter.getDefaultAdapter();
        checkBTState();
        
        btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    sendData("1");
                    Toast.makeText(getBaseContext(), "Включаем LED", Toast.LENGTH_SHORT).show();
                } else {
                    sendData("0");
                    Toast.makeText(getBaseContext(), "Выключаем LED", Toast.LENGTH_SHORT).show();
                }
            }
        });
        
    }
    
    @Override
    public void onResume() {
      super.onResume();
         
      Log.d(TAG, "...onResume - попытка соединения...");
      
      // Set up a pointer to the remote node using it's address.
      BluetoothDevice device = btAdapter.getRemoteDevice(adress);
      
      
      // Two things are needed to make a connection:
      //   A MAC address, which we got above.
      //   A Service ID or UUID.  In this case we are using the
      //     UUID for SPP.
      try {
        mSocket = device.createRfcommSocketToServiceRecord(My_UUID);
      } catch (IOException e) {
        errorExit("Fatal Error", "In onResume() and socket create failed: " + e.getMessage() + ".");
      }
      
      // Discovery is resource intensive.  Make sure it isn't going on
      // when you attempt to connect and pass your message.
      btAdapter.cancelDiscovery();
      
      // Establish the connection.  This will block until it connects.
      Log.d(TAG, "...Соединяемся...");
      try {
        mSocket.connect();
        Log.d(TAG, "...Соединение установлено и готово к передачи данных...");
      } catch (IOException e) {
        try {
          mSocket.close();
        } catch (IOException e2) {
          errorExit("Fatal Error", "In onResume() and unable to close socket during connection failure" + e2.getMessage() + ".");
        }
      }
        
      // Create a data stream so we can talk to server.
      Log.d(TAG, "...Создание Socket...");
    
      try {
        outStream = mSocket.getOutputStream();
      } catch (IOException e) {
        errorExit("Fatal Error", "In onResume() and output stream creation failed:" + e.getMessage() + ".");
      }
    }
    
    @Override
    public void onPause() {
      super.onPause();
    
      Log.d(TAG, "...In onPause()...");
    
      if (outStream != null) {
        try {
          outStream.flush();
        } catch (IOException e) {
          errorExit("Fatal Error", "In onPause() and failed to flush output stream: " + e.getMessage() + ".");
        }
      }
    
      try     {
        mSocket.close();
      } catch (IOException e2) {
        errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + ".");
      }
    }
      
    private void checkBTState() {
      // Check for Bluetooth support and then check to make sure it is turned on
      // Emulator doesn't support Bluetooth and will return null
      if(btAdapter==null) { 
        errorExit("Fatal Error", "Bluetooth не поддерживается");
      } else {
        if (btAdapter.isEnabled()) {
          Log.d(TAG, "...Bluetooth включен...");
        } else {
          //Prompt user to turn on Bluetooth
          Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
          startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
        }
      }
    }
 
    private void errorExit(String title, String message){
        Toast.makeText(getBaseContext(), title + " - " + message, Toast.LENGTH_LONG).show();
        finish();
      }
    
    private void sendData(String message) {
        byte[] msgBuffer = message.getBytes();
      
        Log.d(TAG, "...Посылаем данные: " + message + "...");
      
        try {
          outStream.write(msgBuffer);
        } catch (IOException e) {
          String msg = "In onResume() and an exception occurred during write: " + e.getMessage();
          if (adress.equals("00:00:00:00:00:00")) 
            msg = msg + ".\n\nВ переменной address у вас прописан 00:00:00:00:00:00, вам необходимо прописать реальный MAC-адрес Bluetooth модуля";
            msg = msg +  ".\n\nПроверьте поддержку SPP UUID: " + My_UUID.toString() + " на Bluetooth модуле, к которому вы подключаетесь.\n\n";
            
            errorExit("Fatal Error", msg);       
        }
      }
    
}
Вот лог:
Кликните здесь для просмотра всего текста
10-04 21:01:30.070: D/dalvikvm(1627): Late-enabling CheckJNI
10-04 21:01:30.140: E/Trace(1627): error opening trace file: No such file or directory (2)
10-04 21:01:30.150: D/ActivityThread(1627): setTargetHeapUtilization:0.25
10-04 21:01:30.150: D/ActivityThread(1627): setTargetHeapIdealFree:8388608
10-04 21:01:30.150: D/ActivityThread(1627): setTargetHeapConcurrentStart:2097152
10-04 21:01:30.230: D/bluetooth1(1627): ...Bluetooth включен...
10-04 21:01:30.230: D/bluetooth1(1627): ...onResume - попытка соединения...
10-04 21:01:30.230: I/BluetoothSocket.cpp(1627): Setting Master socket option
10-04 21:01:30.240: D/bluetooth1(1627): ...Соединяемся...
10-04 21:01:42.240: D/bluetooth1(1627): ...Создание Socket...
10-04 21:01:42.310: D/libEGL(1627): loaded /system/lib/egl/libEGL_adreno200.so
10-04 21:01:42.310: D/libEGL(1627): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
10-04 21:01:42.310: D/libEGL(1627): loaded /system/lib/egl/libGLESv2_adreno200.so
10-04 21:01:42.320: I/Adreno200-EGL(1627): <qeglDrvAPI_eglInitialize:299>: EGL 1.4 QUALCOMM build: (Merge)
10-04 21:01:42.320: I/Adreno200-EGL(1627): Build Date: 07/09/13 Tue
10-04 21:01:42.320: I/Adreno200-EGL(1627): Local Branch: AU_41
10-04 21:01:42.320: I/Adreno200-EGL(1627): Remote Branch:
10-04 21:01:42.320: I/Adreno200-EGL(1627): Local Patches:
10-04 21:01:42.320: I/Adreno200-EGL(1627): Reconstruct Branch:
10-04 21:01:42.350: D/OpenGLRenderer(1627): Enabling debug mode 0
10-04 21:01:44.760: D/bluetooth1(1627): ...Посылаем данные: 1...
10-04 21:01:44.780: E/BluetoothSocket(1627): java.io.IOException: socket closed
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.bluetooth.BluetoothSocket.write(BluetoothSocket.java:398)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.bluetooth.BluetoothOutputStream.write(BluetoothOutputStream.java:89)
10-04 21:01:44.780: E/BluetoothSocket(1627): at java.io.OutputStream.write(OutputStream.java:82)
10-04 21:01:44.780: E/BluetoothSocket(1627): at com.example.conpc.MainActivity.sendData(MainActivity.java:145)
10-04 21:01:44.780: E/BluetoothSocket(1627): at com.example.conpc.MainActivity.access$0(MainActivity.java:139)
10-04 21:01:44.780: E/BluetoothSocket(1627): at com.example.conpc.MainActivity$1.onCheckedChanged(MainActivity.java:39)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.widget.CompoundButton.setChecked(CompoundButton.java:130)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.widget.ToggleButton.setChecked(ToggleButton.java:73)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.widget.CompoundButton.toggle(CompoundButton.java:91)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.widget.CompoundButton.performClick(CompoundButton.java:103)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.view.View$PerformClick.run(View.java:17161)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.os.Handler.handleCallback(Handler.java:615)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.os.Handler.dispatchMessage(Handler.java:92)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.os.Looper.loop(Looper.java:213)
10-04 21:01:44.780: E/BluetoothSocket(1627): at android.app.ActivityThread.main(ActivityThread.java:4787)
10-04 21:01:44.780: E/BluetoothSocket(1627): at java.lang.reflect.Method.invokeNative(Native Method)
10-04 21:01:44.780: E/BluetoothSocket(1627): at java.lang.reflect.Method.invoke(Method.java:511)
10-04 21:01:44.780: E/BluetoothSocket(1627): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
10-04 21:01:44.780: E/BluetoothSocket(1627): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
10-04 21:01:44.780: E/BluetoothSocket(1627): at dalvik.system.NativeStart.main(Native Method)
10-04 21:01:44.850: D/bluetooth1(1627): ...In onPause()...


Добавлено через 21 час 42 минуты
Тема еще актуальна, друзья помогайте.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.10.2013, 16:44     Снова Bluetooth
Посмотрите здесь:

Bluetooth Android
Bluetooth Broadastreceiver Android
Bluetooth + Android Android
Android + PC + bluetooth Android
Bluetooth кнопка Android
UUID. Bluetooth connect Android
Android Кто работал с Bluetooth?
Bluetooth (чтоб его.) Android
Bluetooth-чат Android
Android Bluetooth- приложение
Android Приём данных по Bluetooth
Работа с bluetooth Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Netscape
 Аватар для Netscape
371 / 358 / 48
Регистрация: 02.10.2009
Сообщений: 712
Записей в блоге: 4
05.10.2013, 20:05     Снова Bluetooth #2
вот грязный хак, может поможет:
http://stackoverflow.com/a/18786701
Maksim2309
45 / 45 / 2
Регистрация: 17.01.2013
Сообщений: 328
06.10.2013, 20:28  [ТС]     Снова Bluetooth #3
Netscape, который раз Вы меня выручаете спасибо. Сейчас попробую

Добавлено через 1 час 10 минут
Цитата Сообщение от Netscape Посмотреть сообщение
вот грязный хак, может поможет:
http://stackoverflow.com/a/18786701
Огромное кол-во ошибок некоторые исправил, но все равно не понимаю многого может подскажите как мой простенький код исправить или вот еще проще нашел
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.example.gbfsgbg;
 
import java.io.IOException;
import java.io.OutputStream;
import java.util.UUID;
 
import android.os.Bundle;
import android.util.Log;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothSocket;
 
public class MainActivity extends Activity {
    
    BluetoothDevice device;
    BluetoothAdapter tmp;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ConnectedThread mConnectedThread = new ConnectedThread();
        mConnectedThread.start();
        mConnectedThread.write("48"); 
    }
    
    class ConnectedThread extends Thread{
         
        BluetoothAdapter bluetooth1;
        private final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
        
        BluetoothSocket clientSocket;
        
        private  BluetoothSocket mmSocket;
        private OutputStream mmOutStream;
        OutputStream tmpOut = null;
     
            private static final String TAG = "bluetooth1";
        public ConnectedThread()
        {
            bluetooth1 = BluetoothAdapter.getDefaultAdapter();
             bluetooth1.enable();
            BluetoothDevice device = bluetooth1.getRemoteDevice("F4:E5:43:34:67:A3");
        
          try {
              mmSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
            } catch (IOException e) {
                Log.d(TAG, "Не создал");
            }
          bluetooth1.cancelDiscovery();
        
           try
           {
            mmSocket.connect();  
           }
           catch(IOException e)
           {Log.d(TAG, "Не подключено");}
           try {
               tmpOut = mmSocket.getOutputStream();
             
           } catch (IOException e) { }
           mmOutStream = tmpOut;
       }
        public void write(String message) {
                Log.d(TAG, "...Данные для отправки: " + message + "...");
             byte[] msgBuffer = message.getBytes();
                try {
                    mmOutStream.write(msgBuffer);
                } 
                catch (IOException e) {
                    Log.d(TAG, "...Ошибка отправки данных: " + e.getMessage() + "...");     
                  }
                }
                 }
 
}
Добавлено через 1 час 48 минут
Решил сделать по другому в общем скачал библиотеку nrComm для Delphi сделал прогу которая подключается к моему android`у. Как мне теперь сделать чтобы при нажатии на кнопку я посылал сигнал на подключенное устройство, т.е. на мой комп??? Это же должно быть легче или я опять что-то не соображаю? Заранее спасибо за любую помощь.
Yandex
Объявления
06.10.2013, 20:28     Снова Bluetooth
Ответ Создать тему
Опции темы

Текущее время: 07:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru