Implemented permissions support for Marshmallow+
This commit is contained in:
parent
08eedd8596
commit
ba0a8b0666
5 changed files with 101 additions and 19 deletions
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
|
|
@ -37,7 +37,7 @@
|
|||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" default="true" assert-keyword="true" jdk-15="true" project-jdk-name="1.8" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.voixtreme.vocalengine">
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="com.voixtreme.vocalengine">
|
||||
|
||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
||||
|
|
@ -12,14 +13,6 @@
|
|||
<!-- INTERNET is needed to use a URI-based audio player, depending on the URI -->
|
||||
<uses-permission android:name="android.permission.INTERNET"/>
|
||||
|
||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||
|
||||
|
||||
|
||||
<!--
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
-->
|
||||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
|
|
@ -52,7 +45,5 @@
|
|||
</intent-filter>
|
||||
</receiver>
|
||||
|
||||
|
||||
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
|||
|
|
@ -1,28 +1,51 @@
|
|||
package com.voixtreme.vocalengine;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.os.Environment;
|
||||
import android.os.Handler;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.util.Log;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.voixtreme.vocalengine.service.VoiXtremeService;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
//=============================================================================
|
||||
// This activity does nothing, and holds the service
|
||||
public class MainActivity extends Activity {
|
||||
|
||||
// Tag
|
||||
private static final String TAG = MainActivity.class.getSimpleName();
|
||||
|
||||
private static final int REQUEST_CODE_PERMISSIONS = 313;
|
||||
|
||||
|
||||
//=========================================================================
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_main);
|
||||
|
||||
super.onCreate(savedInstanceState);
|
||||
|
||||
if (permissionsOK()) {
|
||||
startApplication();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Start application when all permissions have been granted
|
||||
*/
|
||||
private void startApplication() {
|
||||
|
||||
setContentView(R.layout.activity_main);
|
||||
startVoixtremeService();
|
||||
|
||||
// Please comment this if you are debugging to keep the activity alive
|
||||
finish();
|
||||
// finish();
|
||||
}
|
||||
|
||||
//=========================================================================
|
||||
|
|
@ -32,6 +55,70 @@ public class MainActivity extends Activity {
|
|||
Intent intentService = new Intent(this, VoiXtremeService.class);
|
||||
startService(intentService);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get all required permissions
|
||||
*
|
||||
* @return true if all permissions where given already...
|
||||
*/
|
||||
private boolean permissionsOK() {
|
||||
|
||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
||||
return true;
|
||||
}
|
||||
|
||||
ArrayList<String> getPermissionsList = new ArrayList<>();
|
||||
|
||||
if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
|
||||
getPermissionsList.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
|
||||
if (checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
|
||||
getPermissionsList.add(Manifest.permission.RECORD_AUDIO);
|
||||
}
|
||||
|
||||
if (getPermissionsList.size() > 0) {
|
||||
String requestStrings[] = new String[getPermissionsList.size()];
|
||||
for (int i=0, len=getPermissionsList.size();i<len;i++) {
|
||||
requestStrings[i] = getPermissionsList.get(i);
|
||||
}
|
||||
|
||||
ActivityCompat.requestPermissions(this, requestStrings, REQUEST_CODE_PERMISSIONS);
|
||||
return false;
|
||||
} else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||
|
||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
boolean granted = true;
|
||||
|
||||
for (int result : grantResults) {
|
||||
if(result != PackageManager.PERMISSION_GRANTED) {
|
||||
granted = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (granted) {
|
||||
startApplication();
|
||||
} else {
|
||||
Toast.makeText(this.getApplicationContext(), R.string.need_permissions, Toast.LENGTH_LONG).show();
|
||||
|
||||
new Handler().postDelayed(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
finish();
|
||||
}
|
||||
}, 2500);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -9,9 +9,10 @@ import com.voixtreme.vxtenginejni.TtsEngineApi;
|
|||
|
||||
import android.media.MediaPlayer;
|
||||
import android.media.MediaPlayer.OnCompletionListener;
|
||||
import android.util.Log;
|
||||
|
||||
public class VxtEngineApi extends TtsEngineApi
|
||||
{
|
||||
public class VxtEngineApi extends TtsEngineApi {
|
||||
private static final String TAG = "VxtEngineApi";
|
||||
|
||||
|
||||
// The constructor should be renamed in each environment
|
||||
|
|
@ -138,6 +139,8 @@ public class VxtEngineApi extends TtsEngineApi
|
|||
String rootDirectory= System.getenv("EXTERNAL_STORAGE");
|
||||
nativeinitializeasr( rootDirectory, serialNumber);
|
||||
|
||||
Log.d(TAG, "InitializeAsr - done");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@
|
|||
<string name="state_uninitialized">Engine is uninitialized</string>
|
||||
<string name="state_init_error">Engine is in init error</string>
|
||||
|
||||
<string name="need_permissions">You need to accept all permissions or the application cannot function correctly, terminating.</string>
|
||||
|
||||
<string name="BootReceiver">VoxPrinter boot Receiver</string>
|
||||
</resources>
|
||||
Loading…
Add table
Add a link
Reference in a new issue