13 package ai.picovoice.porcupinedemoservice;
15 import android.Manifest;
16 import android.content.BroadcastReceiver;
17 import android.content.Context;
18 import android.content.Intent;
19 import android.content.IntentFilter;
20 import android.content.pm.PackageManager;
21 import android.os.Bundle;
22 import android.view.View;
23 import android.widget.TextView;
24 import android.widget.ToggleButton;
26 import androidx.annotation.NonNull;
27 import androidx.appcompat.app.AppCompatActivity;
28 import androidx.core.app.ActivityCompat;
29 import androidx.core.content.ContextCompat;
36 return ActivityCompat.checkSelfPermission(
this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
40 ActivityCompat.requestPermissions(
this,
new String[]{Manifest.permission.RECORD_AUDIO}, 0);
45 super.onRequestPermissionsResult(requestCode, permissions, grantResults);
46 if (grantResults.length == 0 || grantResults[0] == PackageManager.PERMISSION_DENIED) {
55 ContextCompat.startForegroundService(
this, serviceIntent);
64 protected void onCreate(Bundle savedInstanceState) {
65 super.onCreate(savedInstanceState);
66 setContentView(
R.layout.activity_main);
70 ToggleButton recordButton = findViewById(
R.id.startButton);
72 recordButton.setOnClickListener(v -> {
73 if (recordButton.isChecked()) {
74 if (hasRecordPermission()) {
77 requestRecordPermission();
88 registerReceiver(receiver,
new IntentFilter(
"PorcupineInitError"));
93 unregisterReceiver(receiver);
99 TextView errorText = findViewById(
R.id.errorMessage);
100 errorText.setText(errorMessage);
101 errorText.setVisibility(View.VISIBLE);
103 ToggleButton recordButton = findViewById(
R.id.startButton);
104 recordButton.setBackground(ContextCompat.getDrawable(
105 getApplicationContext(),
106 R.drawable.button_disabled));
107 recordButton.setChecked(
false);
108 recordButton.setEnabled(
false);
116 onPorcupineInitError(intent.getStringExtra(
"errorMessage"));