summaryrefslogtreecommitdiff
path: root/LoopbackApp/app
diff options
context:
space:
mode:
Diffstat (limited to 'LoopbackApp/app')
-rw-r--r--LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java93
-rw-r--r--LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackApplication.java16
-rw-r--r--LoopbackApp/app/src/main/java/org/drrickorang/loopback/SettingsActivity.java17
-rw-r--r--LoopbackApp/app/src/main/res/layout/main_activity.xml1
4 files changed, 113 insertions, 14 deletions
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 eac59e4..698db9d 100644
--- a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java
+++ b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackActivity.java
@@ -18,6 +18,8 @@ package org.drrickorang.loopback;
import android.app.Activity;
import android.content.Intent;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.database.Cursor;
import android.provider.OpenableColumns;
@@ -37,6 +39,7 @@ import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.Button;
+import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.Spinner;
import android.widget.Toast;
@@ -46,6 +49,7 @@ import android.database.Cursor;
import android.os.Handler;
import android.os.Message;
+import java.io.FileOutputStream;
import java.util.Arrays;
import java.io.File;
@@ -59,6 +63,8 @@ public class LoopbackActivity extends Activity {
public final static String SETTINGS_OBJECT = "org.drrickorang.loopback.SETTINGS_OBJECT";
private static final int SAVE_TO_WAVE_REQUEST = 42;
+ private static final int SAVE_TO_PNG_REQUEST = 43;
+
private static final int SETTINGS_ACTIVITY_REQUEST_CODE = 44;
LoopbackAudioThread audioThread = null;
NativeAudioThread nativeAudioThread = null;
@@ -310,9 +316,9 @@ public class LoopbackActivity extends Activity {
public void onButtonSave(View view) {
//create filename with date
- String date = (String) DateFormat.format("yyyy_MM_dd_kk_mm", System.currentTimeMillis());
+ String date = (String) DateFormat.format("MMddkkmm", System.currentTimeMillis());
String micSource = getApp().getMicSourceString( getApp().getMicSource());
- String fileName = "loopback_"+micSource+"_"+date+".wav";
+ String fileName = micSource+"_"+date;
//MIC
//VERSION?
@@ -320,23 +326,38 @@ public class LoopbackActivity extends Activity {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+
+
+ Intent intent2 = new Intent(Intent.ACTION_CREATE_DOCUMENT);
+ intent2.addCategory(Intent.CATEGORY_OPENABLE);
+ intent2.setType("image/png");
+
+ intent2.putExtra(Intent.EXTRA_TITLE,fileName+".png"); //suggested filename
+ startActivityForResult(intent2, SAVE_TO_PNG_REQUEST);
+
// browser.
Intent intent = new Intent(Intent.ACTION_CREATE_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("audio/wav");
- intent.putExtra(Intent.EXTRA_TITLE,fileName); //suggested filename
+ intent.putExtra(Intent.EXTRA_TITLE,fileName+".wav"); //suggested filename
startActivityForResult(intent, SAVE_TO_WAVE_REQUEST);
- }
+
+
+
+ }
else {
- showToast("Saving Wave to: "+fileName);
+ showToast("Saving Wave to: "+fileName+".wav");
// Toast.makeText(getApplicationContext(), "Saving Wave to: "+fileName,
// Toast.LENGTH_SHORT).show();
//save to a given uri... local file?
- Uri uri = Uri.parse("file://mnt/sdcard/"+fileName);
+ Uri uri = Uri.parse("file://mnt/sdcard/"+fileName+".wav");
+
saveToWavefile(uri);
+ Uri uri2 = Uri.parse("file://mnt/sdcard/"+fileName+".png");
+ saveScreenShot(uri2);
}
}
@@ -351,6 +372,15 @@ public class LoopbackActivity extends Activity {
uri = resultData.getData();
saveToWavefile(uri);
}
+ } else if( requestCode == SAVE_TO_PNG_REQUEST && resultCode == Activity.RESULT_OK) {
+
+ log("got SAVE TO PNG intent back!");
+ Uri uri = null;
+ if (resultData != null) {
+ uri = resultData.getData();
+ saveScreenShot(uri);
+ }
+
} else if (requestCode == SETTINGS_ACTIVITY_REQUEST_CODE &&
resultCode == Activity.RESULT_OK) {
//new settings!
@@ -454,8 +484,13 @@ public class LoopbackActivity extends Activity {
String micSourceName = getApp().getMicSourceString(micSource);
if(micSourceName != null) {
s.append(String.format(" Mic: %s", micSourceName));
- mTextInfo.setText(s.toString());
}
+
+ String info = getApp().getSystemInfo();
+ s.append(" "+info);
+
+ mTextInfo.setText(s.toString());
+
}
private static void log(String msg) {
@@ -504,4 +539,48 @@ public class LoopbackActivity extends Activity {
}
}
+
+ void saveScreenShot(Uri uri) {
+
+ boolean status = false;
+ ParcelFileDescriptor parcelFileDescriptor = null;
+ FileOutputStream outputStream = null;
+ try {
+ parcelFileDescriptor = getApplicationContext().getContentResolver().openFileDescriptor(uri, "w");
+
+ FileDescriptor fileDescriptor = parcelFileDescriptor.getFileDescriptor();
+ outputStream= new FileOutputStream(fileDescriptor);
+
+ log("Done creating output stream");
+
+ LinearLayout LL = (LinearLayout) findViewById(R.id.linearLayoutMain);
+
+ View v = LL.getRootView();
+ v.setDrawingCacheEnabled(true);
+ Bitmap b = v.getDrawingCache();
+ //BitmapDrawable bitmapDrawable = new BitmapDrawable(b);
+
+ //save
+ b.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
+// int sampleCount = data.length;
+// writeHeader(sampleCount);
+// writeDataBufer(data);
+// mOutputStream.close();
+ status = true;
+ parcelFileDescriptor.close();
+ } catch (Exception e) {
+ outputStream = null;
+ log("Failed to open png" +e);
+ } finally {
+ try {
+ if (parcelFileDescriptor != null) {
+ parcelFileDescriptor.close();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ log("Error closing ParcelFile Descriptor");
+ }
+ }
+ }
+
}
diff --git a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackApplication.java b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackApplication.java
index 6af44a6..0071f2d 100644
--- a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackApplication.java
+++ b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/LoopbackApplication.java
@@ -18,6 +18,7 @@ package org.drrickorang.loopback;
import android.app.Application;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.media.AudioFormat;
import android.media.AudioManager;
@@ -183,6 +184,21 @@ public class LoopbackApplication extends Application {
}
+ String getSystemInfo() {
+
+ String info = null;
+
+ try {
+ int versionCode = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0).versionCode;
+ String versionName = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0).versionName;
+ info = String.format("Ver. " +versionCode +"."+ versionName + " | " +Build.MODEL + " | " + Build.FINGERPRINT);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+
+ return info;
+ }
+
boolean isSafeToUseSles() {
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD;
}
diff --git a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/SettingsActivity.java b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/SettingsActivity.java
index f27361c..43c6099 100644
--- a/LoopbackApp/app/src/main/java/org/drrickorang/loopback/SettingsActivity.java
+++ b/LoopbackApp/app/src/main/java/org/drrickorang/loopback/SettingsActivity.java
@@ -161,13 +161,16 @@ OnValueChangeListener {
mSpinnerSamplingRate.setSelection(nPosition);
- try {
- int versionCode = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0).versionCode;
- String versionName = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0).versionName;
- mTextSettingsInfo.setText("SETTINGS - Ver. " +versionCode +"."+ versionName + " | " +Build.MODEL + " | " + Build.FINGERPRINT);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
+// try {
+// int versionCode = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0).versionCode;
+// String versionName = getApplicationContext().getPackageManager().getPackageInfo(getApplicationContext().getPackageName(), 0).versionName;
+// mTextSettingsInfo.setText("SETTINGS - Ver. " +versionCode +"."+ versionName + " | " +Build.MODEL + " | " + Build.FINGERPRINT);
+// } catch (PackageManager.NameNotFoundException e) {
+// e.printStackTrace();
+// }
+ String info = getApp().getSystemInfo();
+ mTextSettingsInfo.setText(String.format("SETTINGS - "+info));
+
}
public void onItemSelected(AdapterView<?> parent, View view,
int pos, long id) {
diff --git a/LoopbackApp/app/src/main/res/layout/main_activity.xml b/LoopbackApp/app/src/main/res/layout/main_activity.xml
index f9cee12..16e058c 100644
--- a/LoopbackApp/app/src/main/res/layout/main_activity.xml
+++ b/LoopbackApp/app/src/main/res/layout/main_activity.xml
@@ -17,6 +17,7 @@
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
+ android:id="@+id/linearLayoutMain"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"