- Forum-Beiträge: 3
13.01.2019, 18:45:28 via Website
13.01.2019 18:45:28 via Website
Hallo zusammen,
Ich möchte mein Telefon über Bluetooth mit einem Arduino verbinden, um den Arduino zu steuern. Also habe ich den folgenden Code geschrieben, um die MAC-Adresse vom Bluetooth-Adapter zu erhalten, wenn ich in der ListView auf ein Gerät klicke:
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
public class home extends AppCompatActivity {
/*Variablen deklarieren*/
//Btn
private Button btnPaired;
//Anzeige-Listen
private ListView devicelist;
//Bluetooth
public BluetoothAdapter myBluetooth = null;
private Set<BluetoothDevice> pairedDevices;
private String device_name, device_address;
public static String EXTRA_ADDRESS = "device_address", EXTRA_NAME = "device_name";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
//Btn
btnPaired = findViewById(R.id.btn_paired_device);
//Anzeige-Listen
devicelist = findViewById(R.id.list_paired_device);
//Bluetooth
myBluetooth = BluetoothAdapter.getDefaultAdapter();
//Überprüfen, ob das Gerät Bluetooth hat
if(myBluetooth == null)
{
Toast.makeText(getApplicationContext(), "Bluetooth Device Not Available", Toast.LENGTH_LONG).show(); //Show message
finish(); //App beenden
}
else if(!myBluetooth.isEnabled())
{
//fragt den User, ob er Bluetooth einschalten will
Intent turnBTon = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(turnBTon,1);
}
btnPaired.setOnClickListener(new View.OnClickListener() {
@Override
//Wenn der Btn "btnPaired" angeklickt wird
public void onClick(View v)
{
pairedDevicesList(); //Funktionen aufrufen
}
});
}
private void pairedDevicesList()
{
//Variablen initalisieren
pairedDevices = myBluetooth.getBondedDevices();
ArrayList list = new ArrayList();
//Überprüft, ob "pairedDevices.size()" größer als "0" ist
if (pairedDevices.size() > 0)
{
//Wiederholt, so oft, wie es Device-Geräte gibt
for(BluetoothDevice bt : pairedDevices)
list.add(bt.getName() + "\n" + bt.getAddress()); //fügt verfügbare Geräte zum Array hinzu
}
else
Toast.makeText(getApplicationContext(), "No Paired Bluetooth Devices Found.", Toast.LENGTH_LONG).show(); //Show message
final ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, list);
devicelist.setAdapter(adapter);
devicelist.setOnItemClickListener(myListClickListener); //OnClick-Funktion
}
private AdapterView.OnItemClickListener myListClickListener = new AdapterView.OnItemClickListener()
{
public void onItemClick (AdapterView<?> av, View v, int arg2, long arg3)
{
// Get the device MAC address, the last 17 chars in the View
String info = ((TextView) v).getText().toString();
device_name = info.substring(0, info.length() - 17);
device_address = info.substring(info.length() - 17);
Intent intent = new Intent(home.this, message.class);
intent.putExtra(EXTRA_ADDRESS, device_address); //this will be received at ledControl (class) Activity
intent.putExtra(EXTRA_NAME, device_name); //this will be received at ledControl (class) Activity
//Change the activity.
startActivity(intent);
}
};
Am Ende des oberen Codes wechsle ich zur Activity "message". Der Code für "message" lautet:
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class message extends AppCompatActivity implements TextWatcher, View.OnClickListener {
private static final String TAG = "message";
/*Variablen deklarieren*/
//Btn
private Button btn_send;
//Eingabe
private EditText fld_message;
//Anzeige-Fld
private TextView mBluetoothStatus;
//String
private String device_adresse, device_name, message_to_the_arduino;
//Class
home home = new home();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent newint = getIntent();
//String
device_adresse = newint.getStringExtra(home.EXTRA_ADDRESS);
device_name = newint.getStringExtra(home.EXTRA_NAME);
//Funktion aufrufen
kopplung_mit_bluetooth_modul();
setContentView(R.layout.activity_message);
//Btn
btn_send = findViewById(R.id.btn_send);
btn_send.setOnClickListener(this);
//Eingabe
fld_message = findViewById(R.id.fld_message);
fld_message.addTextChangedListener(this);
//Anzeige-Fld
mBluetoothStatus = findViewById(R.id.fld_bt_status);
}
private void kopplung_mit_bluetooth_modul()
{
//Connect with the Bluetooth-Adapter
}
private void send_message()
{
//Send the String "message_to_the_arduino"
}
/*Btn*/
@Override
public void onClick(View v) {
switch(v.getId())
{
case R.id.btn_send:
send_message();
break;
}
}
/*Eingabefeld*/
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after)
{}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
message_to_the_arduino = s.toString();
}
@Override
public void afterTextChanged(Editable s)
{}
}
In der Activity "message" möchte ich eine Verbindung zum Bluetooth-Adapter herstellen [Funktion "kopplung_mit_bluetooth_modul"].
Danach möchte ich LEDs am Arduino EIN / AUS machen, also muss ich eine Nachricht an den Arduino senden (Befehl) und Nachrichten vom Arduino erhalten (Rückmeldung) [Funktion "send_message"].
Ich habe nun schon vieles verschiedenes ausprobiert, kriege es aber einfach nicht gebacken.
Kann mir jemand helfen ????
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.