diff options
author | Ricardo Garcia <rago@google.com> | 2015-04-09 16:08:54 -0700 |
---|---|---|
committer | Ricardo Garcia <rago@google.com> | 2015-04-09 16:08:54 -0700 |
commit | 02695430e4ef81065004c7a5a24282157dc13252 (patch) | |
tree | a002c02691b9d1050ddfeb8a4d72e7dea4a143d7 | |
parent | 698bcf06af8a983bf47b3a6bc1682690fe6db13c (diff) | |
download | drrickorang-02695430e4ef81065004c7a5a24282157dc13252.tar.gz |
Capturing PNG and more info on screen
Added capability to capture PNG of latest experiment, and more info on screen.
Name size of wave and png reduced in lenght.
Extra information on Settings.
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" |