diff options
author | gkasten <glenn.kasten@gmail.com> | 2015-10-06 09:19:07 -0700 |
---|---|---|
committer | gkasten <glenn.kasten@gmail.com> | 2015-10-06 09:19:07 -0700 |
commit | 39b0cffceb8efd9cb30e5554fb3fcb6520692e61 (patch) | |
tree | 8e9c679116cf493beaa116854e76328e98b221bc | |
parent | 9c1b793385aeebbed6cb8131cc1881bf1eef8f39 (diff) | |
parent | d307d0809b4dac2fbaf4968480bac092f2288345 (diff) | |
download | drrickorang-39b0cffceb8efd9cb30e5554fb3fcb6520692e61.tar.gz |
Merge pull request #13 from dturner/master
Use latest gradle plugin, remove .idea folder
-rw-r--r-- | LoopbackApp/.gitignore | 7 | ||||
-rw-r--r-- | LoopbackApp/.idea/.name | 1 | ||||
-rw-r--r-- | LoopbackApp/.idea/compiler.xml | 22 | ||||
-rw-r--r-- | LoopbackApp/.idea/copyright/profiles_settings.xml | 3 | ||||
-rw-r--r-- | LoopbackApp/.idea/dictionaries/rago.xml | 3 | ||||
-rw-r--r-- | LoopbackApp/.idea/gradle.xml | 18 | ||||
-rw-r--r-- | LoopbackApp/.idea/misc.xml | 78 | ||||
-rw-r--r-- | LoopbackApp/.idea/modules.xml | 9 | ||||
-rw-r--r-- | LoopbackApp/.idea/runConfigurations.xml | 12 | ||||
-rw-r--r-- | LoopbackApp/.idea/vcs.xml | 6 | ||||
-rw-r--r-- | LoopbackApp/app/app.iml | 17 | ||||
-rw-r--r-- | LoopbackApp/app/build.gradle | 44 | ||||
-rw-r--r-- | LoopbackApp/app/src/main/AndroidManifest.xml | 4 | ||||
-rw-r--r-- | LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java | 67 | ||||
-rw-r--r-- | LoopbackApp/build.gradle | 2 | ||||
-rw-r--r-- | LoopbackApp/gradle/wrapper/gradle-wrapper.properties | 2 |
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 |