summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgkasten <glenn.kasten@gmail.com>2015-10-06 09:19:07 -0700
committergkasten <glenn.kasten@gmail.com>2015-10-06 09:19:07 -0700
commit39b0cffceb8efd9cb30e5554fb3fcb6520692e61 (patch)
tree8e9c679116cf493beaa116854e76328e98b221bc
parent9c1b793385aeebbed6cb8131cc1881bf1eef8f39 (diff)
parentd307d0809b4dac2fbaf4968480bac092f2288345 (diff)
downloaddrrickorang-39b0cffceb8efd9cb30e5554fb3fcb6520692e61.tar.gz
Merge pull request #13 from dturner/master
Use latest gradle plugin, remove .idea folder
-rw-r--r--LoopbackApp/.gitignore7
-rw-r--r--LoopbackApp/.idea/.name1
-rw-r--r--LoopbackApp/.idea/compiler.xml22
-rw-r--r--LoopbackApp/.idea/copyright/profiles_settings.xml3
-rw-r--r--LoopbackApp/.idea/dictionaries/rago.xml3
-rw-r--r--LoopbackApp/.idea/gradle.xml18
-rw-r--r--LoopbackApp/.idea/misc.xml78
-rw-r--r--LoopbackApp/.idea/modules.xml9
-rw-r--r--LoopbackApp/.idea/runConfigurations.xml12
-rw-r--r--LoopbackApp/.idea/vcs.xml6
-rw-r--r--LoopbackApp/app/app.iml17
-rw-r--r--LoopbackApp/app/build.gradle44
-rw-r--r--LoopbackApp/app/src/main/AndroidManifest.xml4
-rw-r--r--LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java67
-rw-r--r--LoopbackApp/build.gradle2
-rw-r--r--LoopbackApp/gradle/wrapper/gradle-wrapper.properties2
16 files changed, 108 insertions, 187 deletions
diff --git a/LoopbackApp/.gitignore b/LoopbackApp/.gitignore
index afbdab3..ba4ecba 100644
--- a/LoopbackApp/.gitignore
+++ b/LoopbackApp/.gitignore
@@ -1,6 +1,5 @@
.gradle
-/local.properties
-/.idea/workspace.xml
-/.idea/libraries
+local.properties
+.idea
.DS_Store
-/build
+build
diff --git a/LoopbackApp/.idea/.name b/LoopbackApp/.idea/.name
deleted file mode 100644
index e50190c..0000000
--- a/LoopbackApp/.idea/.name
+++ /dev/null
@@ -1 +0,0 @@
-LoopbackApp \ No newline at end of file
diff --git a/LoopbackApp/.idea/compiler.xml b/LoopbackApp/.idea/compiler.xml
deleted file mode 100644
index 9a8b7e5..0000000
--- a/LoopbackApp/.idea/compiler.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="CompilerConfiguration">
- <option name="DEFAULT_COMPILER" value="Javac" />
- <resourceExtensions />
- <wildcardResourcePatterns>
- <entry name="!?*.java" />
- <entry name="!?*.form" />
- <entry name="!?*.class" />
- <entry name="!?*.groovy" />
- <entry name="!?*.scala" />
- <entry name="!?*.flex" />
- <entry name="!?*.kt" />
- <entry name="!?*.clj" />
- </wildcardResourcePatterns>
- <annotationProcessing>
- <profile default="true" name="Default" enabled="false">
- <processorPath useClasspath="true" />
- </profile>
- </annotationProcessing>
- </component>
-</project> \ No newline at end of file
diff --git a/LoopbackApp/.idea/copyright/profiles_settings.xml b/LoopbackApp/.idea/copyright/profiles_settings.xml
deleted file mode 100644
index e7bedf3..0000000
--- a/LoopbackApp/.idea/copyright/profiles_settings.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="CopyrightManager">
- <settings default="" />
-</component> \ No newline at end of file
diff --git a/LoopbackApp/.idea/dictionaries/rago.xml b/LoopbackApp/.idea/dictionaries/rago.xml
deleted file mode 100644
index ddf5134..0000000
--- a/LoopbackApp/.idea/dictionaries/rago.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-<component name="ProjectDictionaryState">
- <dictionary name="rago" />
-</component> \ No newline at end of file
diff --git a/LoopbackApp/.idea/gradle.xml b/LoopbackApp/.idea/gradle.xml
deleted file mode 100644
index 1bbc21d..0000000
--- a/LoopbackApp/.idea/gradle.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="GradleSettings">
- <option name="linkedExternalProjectsSettings">
- <GradleProjectSettings>
- <option name="distributionType" value="DEFAULT_WRAPPED" />
- <option name="externalProjectPath" value="$PROJECT_DIR$" />
- <option name="gradleJvm" value="1.7" />
- <option name="modules">
- <set>
- <option value="$PROJECT_DIR$" />
- <option value="$PROJECT_DIR$/app" />
- </set>
- </option>
- </GradleProjectSettings>
- </option>
- </component>
-</project> \ No newline at end of file
diff --git a/LoopbackApp/.idea/misc.xml b/LoopbackApp/.idea/misc.xml
deleted file mode 100644
index 6dcbe11..0000000
--- a/LoopbackApp/.idea/misc.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="EntryPointsManager">
- <entry_points version="2.0" />
- </component>
- <component name="ProjectInspectionProfilesVisibleTreeState">
- <entry key="Project Default">
- <profile-state>
- <expanded-state>
- <State>
- <id />
- </State>
- <State>
- <id>Android Lint</id>
- </State>
- <State>
- <id>Finalization issuesJava</id>
- </State>
- <State>
- <id>Groovy</id>
- </State>
- <State>
- <id>ImportsJava</id>
- </State>
- <State>
- <id>JUnit issuesJava</id>
- </State>
- <State>
- <id>Java</id>
- </State>
- <State>
- <id>Memory issuesJava</id>
- </State>
- <State>
- <id>Probable bugsGroovy</id>
- </State>
- </expanded-state>
- <selected-state>
- <State>
- <id>Android</id>
- </State>
- </selected-state>
- </profile-state>
- </entry>
- </component>
- <component name="ProjectLevelVcsManager" settingsEditedManually="false">
- <OptionsSetting value="true" id="Add" />
- <OptionsSetting value="true" id="Remove" />
- <OptionsSetting value="true" id="Checkout" />
- <OptionsSetting value="true" id="Update" />
- <OptionsSetting value="true" id="Status" />
- <OptionsSetting value="true" id="Edit" />
- <ConfirmationsSetting value="0" id="Add" />
- <ConfirmationsSetting value="0" id="Remove" />
- </component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" assert-keyword="true" jdk-15="true" project-jdk-name="1.7" project-jdk-type="JavaSDK">
- <output url="file://$PROJECT_DIR$/build/classes" />
- </component>
- <component name="ProjectType">
- <option name="id" value="Android" />
- </component>
- <component name="masterDetails">
- <states>
- <state key="ProjectJDKs.UI">
- <settings>
- <last-edited>1.7</last-edited>
- <splitter-proportions>
- <option name="proportions">
- <list>
- <option value="0.2" />
- </list>
- </option>
- </splitter-proportions>
- </settings>
- </state>
- </states>
- </component>
-</project> \ No newline at end of file
diff --git a/LoopbackApp/.idea/modules.xml b/LoopbackApp/.idea/modules.xml
deleted file mode 100644
index 8f01d90..0000000
--- a/LoopbackApp/.idea/modules.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/LoopbackApp.iml" filepath="$PROJECT_DIR$/LoopbackApp.iml" />
- <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
- </modules>
- </component>
-</project> \ No newline at end of file
diff --git a/LoopbackApp/.idea/runConfigurations.xml b/LoopbackApp/.idea/runConfigurations.xml
deleted file mode 100644
index 7f68460..0000000
--- a/LoopbackApp/.idea/runConfigurations.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="RunConfigurationProducerService">
- <option name="ignoredProducers">
- <set>
- <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
- <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
- <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
- </set>
- </option>
- </component>
-</project> \ No newline at end of file
diff --git a/LoopbackApp/.idea/vcs.xml b/LoopbackApp/.idea/vcs.xml
deleted file mode 100644
index 6564d52..0000000
--- a/LoopbackApp/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="" vcs="" />
- </component>
-</project> \ No newline at end of file
diff --git a/LoopbackApp/app/app.iml b/LoopbackApp/app/app.iml
index bf41d69..d1e04cd 100644
--- a/LoopbackApp/app/app.iml
+++ b/LoopbackApp/app/app.iml
@@ -36,34 +36,34 @@
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/debug" type="java-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
- <sourceFolder url="file://$MODULE_DIR$/build/generated/res/generated/androidTest/debug" type="java-test-resource" />
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/debug/renderscript" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
- <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
+ <sourceFolder url="file://$MODULE_DIR$/src/main/renderscript" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
- <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
+ <sourceFolder url="file://$MODULE_DIR$/src/androidTest/renderscript" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
@@ -71,6 +71,8 @@
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex-cache" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/jars" />
+ <excludeFolder url="file://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.0.1/jars" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jacoco" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
@@ -86,7 +88,10 @@
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
</content>
- <orderEntry type="jdk" jdkName="Android API 21 Platform" jdkType="Android SDK" />
+ <orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="library" exported="" name="appcompat-v7-23.0.1" level="project" />
+ <orderEntry type="library" exported="" name="support-v4-23.0.1" level="project" />
+ <orderEntry type="library" exported="" name="support-annotations-23.0.1" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/LoopbackApp/app/build.gradle b/LoopbackApp/app/build.gradle
index b1172f4..9f2df75 100644
--- a/LoopbackApp/app/build.gradle
+++ b/LoopbackApp/app/build.gradle
@@ -1,26 +1,38 @@
-apply plugin: 'com.android.application'
+apply plugin: 'com.android.model.application'
-android {
- compileSdkVersion 21
- buildToolsVersion "21.1.2"
+model {
+ android {
+ compileSdkVersion = 23
+ buildToolsVersion = "23.0.1"
- defaultConfig {
- applicationId "org.drrickorang.loopback"
- minSdkVersion 11
- targetSdkVersion 21
-
- ndk {
- moduleName "libloopback"
- ldLibs "OpenSLES", "log"
+ defaultConfig.with {
+ applicationId = "org.drrickorang.loopback"
+ minSdkVersion.apiLevel = 11
+ targetSdkVersion.apiLevel = 23
}
}
+ android.ndk {
+ moduleName += "loopback"
+ cppFlags += "-I${project.rootDir}/app/src/main/jni".toString()
+ CFlags += "-I${project.rootDir}/app/src/main/jni".toString()
+
+ ldLibs += "OpenSLES"
+ ldLibs += "log"
+ }
- buildTypes {
+ android.buildTypes {
release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
+ minifyEnabled = false
+ proguardFiles += file('proguard.cfg')
+ }
+ debug {
+ ndk.with {
+ debuggable = true
+ }
}
}
+}
-
+dependencies {
+ compile 'com.android.support:appcompat-v7:23.0.1'
}
diff --git a/LoopbackApp/app/src/main/AndroidManifest.xml b/LoopbackApp/app/src/main/AndroidManifest.xml
index 4dae4a7..1122313 100644
--- a/LoopbackApp/app/src/main/AndroidManifest.xml
+++ b/LoopbackApp/app/src/main/AndroidManifest.xml
@@ -26,10 +26,6 @@
android:versionCode="7"
android:versionName="0.5">
- <uses-sdk
- android:minSdkVersion="18"
- android:targetSdkVersion="21"/>
-
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
diff --git a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java
index 437db6e..fc1e001 100644
--- a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java
+++ b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java
@@ -21,11 +21,13 @@ import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.util.Arrays;
+import android.Manifest;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.media.AudioManager;
@@ -37,6 +39,8 @@ import android.os.IBinder;
import android.os.Message;
import android.os.ParcelFileDescriptor;
import android.provider.MediaStore;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.ContextCompat;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.Gravity;
@@ -63,6 +67,7 @@ public class LoopbackActivity extends Activity {
private static final int SAVE_PLAYER_BUFFER_PERIOD_TO_TXT_REQUEST = 46;
private static final int SETTINGS_ACTIVITY_REQUEST_CODE = 54;
private static final int THREAD_SLEEP_DURATION_MS = 200;
+ private static final int PERMISSIONS_REQUEST_RECORD_AUDIO = 201;
LoopbackAudioThread mAudioThread = null;
NativeAudioThread mNativeAudioThread = null;
@@ -699,11 +704,18 @@ public class LoopbackActivity extends Activity {
/** Start the latency test. */
public void onButtonLatencyTest(View view) {
- startLatencyTest();
- }
+ // Ensure we have RECORD_AUDIO permissions
+ // On Android M (API 23) we must request dangerous permissions each time we use them
+ if (hasRecordAudioPermission()){
+ startLatencyTest();
+ } else {
+ requestRecordAudioPermission();
+ }
+ }
private void startLatencyTest() {
+
if (!isBusy()) {
mBarMasterLevel.setEnabled(false);
resetBufferPeriodRecord(mRecorderBufferPeriod, mPlayerBufferPeriod);
@@ -735,11 +747,17 @@ public class LoopbackActivity extends Activity {
/** Start the Buffer (Glitch Detection) Test. */
public void onButtonBufferTest(View view) {
- startBufferTest();
+
+ if (hasRecordAudioPermission()){
+ startBufferTest();
+ } else {
+ requestRecordAudioPermission();
+ }
}
private void startBufferTest() {
+
if (!isBusy()) {
mBarMasterLevel.setEnabled(false);
resetBufferPeriodRecord(mRecorderBufferPeriod, mPlayerBufferPeriod);
@@ -1596,4 +1614,47 @@ public class LoopbackActivity extends Activity {
}
return count;
}
+
+ /**
+ * Check whether we have the RECORD_AUDIO permission
+ * @return true if we do
+ */
+ private boolean hasRecordAudioPermission(){
+ boolean hasPermission = (ContextCompat.checkSelfPermission(this,
+ Manifest.permission.RECORD_AUDIO) == PackageManager.PERMISSION_GRANTED);
+
+ log("Has RECORD_AUDIO permission? " + hasPermission);
+ return hasPermission;
+ }
+
+ /**
+ * Requests the RECORD_AUDIO permission from the user
+ */
+ private void requestRecordAudioPermission(){
+
+ String requiredPermission = Manifest.permission.RECORD_AUDIO;
+
+ // If the user previously denied this permission then show a message explaining why
+ // this permission is needed
+ if (ActivityCompat.shouldShowRequestPermissionRationale(this,
+ requiredPermission)) {
+
+ showToast("This app needs to record audio through the microphone to test the device's performance");
+ }
+
+ // request the permission.
+ ActivityCompat.requestPermissions(this,
+ new String[]{requiredPermission},
+ PERMISSIONS_REQUEST_RECORD_AUDIO);
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ String permissions[], int[] grantResults) {
+
+ // We can ignore this call since we'll check for RECORD_AUDIO each time the
+ // user does anything which requires that permission. We can't, however, delete
+ // this method as this will cause ActivityCompat.requestPermissions to fail.
+ }
+
}
diff --git a/LoopbackApp/build.gradle b/LoopbackApp/build.gradle
index 833eee9..0984bdc 100644
--- a/LoopbackApp/build.gradle
+++ b/LoopbackApp/build.gradle
@@ -4,7 +4,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.1.0'
+ classpath 'com.android.tools.build:gradle-experimental:0.3.0-alpha6'
}
}
diff --git a/LoopbackApp/gradle/wrapper/gradle-wrapper.properties b/LoopbackApp/gradle/wrapper/gradle-wrapper.properties
index 0c71e76..693472e 100644
--- a/LoopbackApp/gradle/wrapper/gradle-wrapper.properties
+++ b/LoopbackApp/gradle/wrapper/gradle-wrapper.properties
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.6-all.zip