Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 234704bc authored by Grzegorz Kołodziejczyk's avatar Grzegorz Kołodziejczyk
Browse files

Add possibility to inject broadcast code while adding broadcast source

Patch extends possibility for injection of broadcast code while adding
broadcast source for scan delegator.

Tag: #feature
Test: Add source to broadcast delegator
Sponsor: jpawlowski@
Bug: 150670922
Bug: 230340466
Change-Id: I94a3831bacd4c31d4489cc953dd7c06f382c8531
parent 98ac72fc
Loading
Loading
Loading
Loading
+53 −3
Original line number Diff line number Diff line
@@ -22,9 +22,14 @@ import android.bluetooth.BluetoothDevice;
import android.bluetooth.BluetoothLeBroadcastMetadata;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.widget.Toast;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.ViewModelProviders;
import androidx.recyclerview.widget.LinearLayoutManager;
@@ -72,9 +77,54 @@ public class BroadcastScanActivity extends AppCompatActivity {

            // Set broadcast source on peer only if scan delegator device context is available
            if (device != null) {
                // Start Dialog with the broadcast input details
                AlertDialog.Builder alert = new AlertDialog.Builder(this);
                LayoutInflater inflater = getLayoutInflater();
                alert.setTitle("Add the Broadcast:");

                View alertView =
                        inflater.inflate(R.layout.broadcast_scan_add_encrypted_source_dialog,
                                         null);
                final EditText code_input_text =
                        alertView.findViewById(R.id.broadcast_code_input);
                BluetoothLeBroadcastMetadata.Builder builder = new
                        BluetoothLeBroadcastMetadata.Builder(broadcast);

                alert.setView(alertView).setNegativeButton("Cancel", (dialog, which) -> {
                    // Do nothing
                }).setPositiveButton("Add", (dialog, which) -> {
                    BluetoothLeBroadcastMetadata metadata;
                    if (code_input_text.getText() == null) {
                        Toast.makeText(recyclerView.getContext(), "Invalid broadcast code",
                                Toast.LENGTH_SHORT).show();
                        return;
                    }
                    if (code_input_text.getText().length() == 0) {
                        Toast.makeText(recyclerView.getContext(), "Adding not encrypted broadcast "
                                       + "source broadcastId="
                                       + broadcastId, Toast.LENGTH_SHORT).show();
                        metadata = builder.setEncrypted(false).build();
                    } else {
                        if (code_input_text.getText().length() != 16) {
                            Toast.makeText(recyclerView.getContext(),
                                           "Invalid Broadcast code length",
                                           Toast.LENGTH_SHORT).show();

                            return;
                        }

                        metadata = builder.setBroadcastCode(
                                        code_input_text.getText().toString().getBytes())
                               .setEncrypted(true)
                               .build();
                    }

                    Toast.makeText(recyclerView.getContext(), "Adding broadcast source"
                                    + " broadcastId=" + broadcastId, Toast.LENGTH_SHORT).show();
                mViewModel.addBroadcastSource(device, broadcast);
                    mViewModel.addBroadcastSource(device, metadata);
                });

                alert.show();
            }
        });
        recyclerView.setAdapter(adapter);
+32 −0
Original line number Diff line number Diff line
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/broadcast_scan_add_encrypted_source_dialog"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="8dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/textView22"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="Broadcast code:" />

        <EditText
            android:id="@+id/broadcast_code_input"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:gravity="start|top"
            android:maxLength="16"
            android:inputType="textMultiLine|textFilter" />
    </LinearLayout>

</LinearLayout>