porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java
Go to the documentation of this file.
1 /*
2  Copyright 2021 Picovoice Inc.
3 
4  You may not use this file except in compliance with the license. A copy of the license is
5  located in the "LICENSE" file accompanying this source.
6 
7  Unless required by applicable law or agreed to in writing, software distributed under the
8  License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
9  express or implied. See the License for the specific language governing permissions and
10  limitations under the License.
11 */
12 
13 package ai.picovoice.porcupinedemoservice;
14 
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;
25 
26 import androidx.annotation.NonNull;
27 import androidx.appcompat.app.AppCompatActivity;
28 import androidx.core.app.ActivityCompat;
29 import androidx.core.content.ContextCompat;
30 
31 public class MainActivity extends AppCompatActivity {
32 
34 
35  private boolean hasRecordPermission() {
36  return ActivityCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED;
37  }
38 
39  private void requestRecordPermission() {
40  ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, 0);
41  }
42 
43  @Override
44  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
45  super.onRequestPermissionsResult(requestCode, permissions, grantResults);
46  if (grantResults.length == 0 || grantResults[0] == PackageManager.PERMISSION_DENIED) {
47  onPorcupineInitError("Microphone permission is required for this demo");
48  } else {
49  startService();
50  }
51  }
52 
53  private void startService() {
54  Intent serviceIntent = new Intent(this, PorcupineService.class);
55  ContextCompat.startForegroundService(this, serviceIntent);
56  }
57 
58  private void stopService() {
59  Intent serviceIntent = new Intent(this, PorcupineService.class);
60  stopService(serviceIntent);
61  }
62 
63  @Override
64  protected void onCreate(Bundle savedInstanceState) {
65  super.onCreate(savedInstanceState);
66  setContentView(R.layout.activity_main);
67 
69 
70  ToggleButton recordButton = findViewById(R.id.startButton);
71 
72  recordButton.setOnClickListener(v -> {
73  if (recordButton.isChecked()) {
74  if (hasRecordPermission()) {
75  startService();
76  } else {
77  requestRecordPermission();
78  }
79  } else {
80  stopService();
81  }
82  });
83  }
84 
85  @Override
86  protected void onResume() {
87  super.onResume();
88  registerReceiver(receiver, new IntentFilter("PorcupineInitError"));
89  }
90 
91  @Override
92  protected void onDestroy() {
93  unregisterReceiver(receiver);
94  super.onDestroy();
95  }
96 
97  private void onPorcupineInitError(final String errorMessage) {
98  runOnUiThread(() -> {
99  TextView errorText = findViewById(R.id.errorMessage);
100  errorText.setText(errorMessage);
101  errorText.setVisibility(View.VISIBLE);
102 
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);
109  stopService();
110  });
111  }
112 
113  public class ServiceBroadcastReceiver extends BroadcastReceiver {
114  @Override
115  public void onReceive(Context context, Intent intent) {
116  onPorcupineInitError(intent.getStringExtra("errorMessage"));
117  }
118  }
119 }
R
#define R
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/extras/stb_vorbis.c:5104
ai.picovoice.porcupinedemoservice.MainActivity.ServiceBroadcastReceiver.onReceive
void onReceive(Context context, Intent intent)
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:115
context
ma_context context
Definition: porcupine/demo/c/dr_libs/tests/external/miniaudio/tests/test_deviceio/ma_test_deviceio.c:56
ai.picovoice.porcupinedemoservice.MainActivity.onDestroy
void onDestroy()
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:92
ai.picovoice.porcupinedemoservice.MainActivity.stopService
void stopService()
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:58
ai.picovoice.porcupinedemoservice.MainActivity.hasRecordPermission
boolean hasRecordPermission()
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:35
ai.picovoice.porcupinedemoservice.MainActivity.onPorcupineInitError
void onPorcupineInitError(final String errorMessage)
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:97
ai.picovoice.porcupinedemoservice.MainActivity
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:31
ai.picovoice.porcupinedemoservice.MainActivity.receiver
ServiceBroadcastReceiver receiver
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:33
ai.picovoice.porcupinedemoservice.PorcupineService
Definition: PorcupineService.java:39
ai.picovoice.porcupinedemoservice.MainActivity.onCreate
void onCreate(Bundle savedInstanceState)
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:64
ai.picovoice.porcupinedemoservice.MainActivity.startService
void startService()
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:53
ai.picovoice.porcupinedemoservice.MainActivity.onResume
void onResume()
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:86
ai.picovoice.porcupinedemoservice.MainActivity.onRequestPermissionsResult
void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults)
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:44
ai.picovoice.porcupinedemoservice.MainActivity.ServiceBroadcastReceiver
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:113
ai.picovoice.porcupinedemoservice.MainActivity.requestRecordPermission
void requestRecordPermission()
Definition: porcupine/demo/android/Service/porcupine-service-demo-app/src/main/java/ai/picovoice/porcupinedemoservice/MainActivity.java:39


picovoice_driver
Author(s):
autogenerated on Fri Apr 1 2022 02:13:56