- 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 ????