Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Java Мобильная разработка (Android)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2022, 15:17   #1
majorNavigator
Новичок
Джуниор
 
Регистрация: 02.08.2022
Сообщений: 1
По умолчанию Приём данных по Bluetooth.

Доброго Вам времени суток! Пишу приложение, принимающее данные по Bluetoоth и отображающее их в текстовом окне. Пытаюсь использовать примеры, найденные на просторах, но Андроид Студио выдаёт сообщения об ошибках (подчёркивает). В 78 строке, в OnResume подчёркнуто
Код:
device.createRfcommSocketToServiceRecord(MY_UUID)
, в 83 строке подчёркнуто btAdapterCanselDiscovery , в 87 строке подчёркнуто btSocket.connected(), в 113 строке:
Код:
(startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT))
, подчёркнуто
Код:
enableBtIntent
. В 43 строке зачёркнуто handler . Почему? Фрагменты, где содержаться ошибки, здесь выделил жирным шрифтом и подчеркнул. Помогите, пожалуйста, разобраться, в чём заключаются эти ошибки и как их исправить. Заранее спасибо. Ниже текст программы:
Код:
package com.example.sharm1;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.UUID;
import android.bluetooth.BluetoothSocket;
import android.os.Handler;
import android.util.Log;
import android.widget.TextView;
import androidx.core.app.ActivityCompat;

public class MainActivity extends Activity {
TextView txtResult;
Handler h;
private static final String TAG = "bluetooth2";
private static final int REQUEST_ENABLE_BT = 1;
final int RECIEVE_MESSAGE = 1;
private BluetoothAdapter btAdapter = null;
private BluetoothSocket btSocket;
private ConnectedThread mConnectedThread;
private StringBuilder sb = new StringBuilder();

// SPP UUID сервиса
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
// MAC-адрес Bluetooth модуля
private static String address = "9C:28:40:09:B1:9A";

String msg_exemple;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);
txtResult = (TextView) findViewById(R.id.txtResult); // для вывода текста, полученного по Bluetooth от внешнего устройства
h = new Handler() {
public void handleMessage(android.os.Message msg) {
txtResult.setText(msg_exemple);
}
};
btAdapter = BluetoothAdapter.getDefaultAdapter(); // получаем локальный Bluetooth адаптер
checkBTState();
}

public void onPause() {
super.onPause();

Log.d(TAG, "In onPause()...");

try {
btSocket.close();
} catch (IOException e2) {
errorExit("Fatal Error", "In onPause() and failed to close socket." + e2.getMessage() + ".");
}
}
@Override
public void onResume{
super.onResume();

Log.d(TAG, "попытка соединения...");

BluetoothDevice device = btAdapter.getRemoteDevice(address);

// MAC адрес, который мы ввели выше.

try {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_CONNECT) != PackageManager.PERMISSION_GRANTED) {

return();
}
btSocket = device.createRfcommSocketToServiceRecord(MY_UUID);
} catch (IOException e) {
errorExit("Error", "Создать соединение не удалось " + e.getMessage() + ".");
}

btAdapter.cancelDiscovery();
// Establish the connection. This will block until it connects.
Log.d(TAG, "Соединяемся...");
try {
btSocket.connect();
Log.d(TAG, "...Соединение установлено и готово к передаче данных...");
} catch (IOException e) {
try {
btSocket.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...");

mConnectedThread = new ConnectedThread(btSocket);
mConnectedThread.start();
}

@Override
private void checkBTState() {

if(btAdapter==null) {
errorExit("Fatal Error", "Bluetooth не поддерживается");
} else {
if (btAdapter.isEnabled()) {
Log.d(TAG, "...Bluetooth включен...");
} else {
Intent enableBtIntent = new Intent(btAdapter.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 class ConnectedThread extends Thread {
private final BluetoothSocket mmSocket;
private final InputStream mmInStream;
private final OutputStream mmOutStream;

public ConnectedThread(BluetoothSocket socket) {
mmSocket = socket;
InputStream tmpIn = null;
OutputStream tmpOut = null;

// Get the input and output streams, using temp objects because
// member streams are final
try {
tmpIn = socket.getInputStream();
tmpOut = socket.getOutputStream();
} catch (IOException e) { }

mmInStream = tmpIn;
mmOutStream = tmpOut;
}

public void run() {
while (true) {
try {
int bytes = mmInStream.available();
if (bytes == 0)
{
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
Log.d(TAG, "Ошибка приостановки потока");
}
continue;
}
byte[] buffer = new byte[bytes]; // buffer store for the stream

// Read from the InputStream
bytes = mmInStream.read(buffer); // Получаем кол-во байт и само сообщение в байтовый массив "buffer"
Log.d(TAG, "Buffer ="+Arrays.toString(buffer));
msg_exemple = Arrays.toString(buffer);
h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget(); // Отправляем в очередь сообщений Handler
} catch (IOException e) {
Log.d(TAG, "Some error: Buffer");
break;
}
}
}
//Отправляем данные на Bluetooth-устройство:
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() + "...");
}
}

public void cancel() {
try {
mmSocket.close();
} catch (IOException e) { }
}
}
}

Последний раз редактировалось majorNavigator; 03.08.2022 в 10:51.
majorNavigator вне форума Ответить с цитированием
Старый 02.08.2022, 15:35   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Запихните код в соответствующие теги и исправьте опечатки, а то непонятно вы так скопировали или что-то еще.
createRfcommSocketToServiceR ecord - серьезно так и было с пробелом?
btAdapterCanselDiscovery в коде нет
enableBtInt ent я т о ж е т а к м о г у п и с а т ь
p51x вне форума Ответить с цитированием
Старый 02.08.2022, 16:43   #3
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
серьезно так и было с пробелом?
Это на форуме, не заключенные в теги, длинные слова принудительно разделяются.
попробуйтенапечататьтекствоттакимоб разомивсепойметевсеводнословонопояв ляютсяпробелы. Через каждые 35 символов будет вставлен пробел.

Последний раз редактировалось macomics; 02.08.2022 в 16:49.
macomics вне форума Ответить с цитированием
Старый 03.08.2022, 03:55   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,289
По умолчанию

Добавил тег CODE - пробелы, разрывающие длинные слова, исчезли. Читаемость прибавилась чуть-чуть, так как в исходном сообщении отсутствует форматирование.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приём данных из сокета в char* arm9n Visual C++ 4 03.08.2013 14:42
Приём данных с COM порта Евгений55 Microsoft Office Excel 3 05.01.2013 16:46
Приём/передача данных delphi7 -Jack- Работа с сетью в Delphi 2 27.06.2012 07:51
Приём данных с com порта kyc0k Помощь студентам 3 28.03.2008 15:04
Как разрешить Форме1 приём данных? Rahim1993 Общие вопросы Delphi 12 19.01.2008 09:57