Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion SoundRecorder.iml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
30 changes: 9 additions & 21 deletions app/app.iml
Original file line number Diff line number Diff line change
Expand Up @@ -62,46 +62,32 @@
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/shaders" 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/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" />
<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/rs" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/ndk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/pre-dexed" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/tmp" />
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
Expand All @@ -110,11 +96,13 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="appcompat-v7-21.0.3" level="project" />
<orderEntry type="library" exported="" name="library-2.4.0" level="project" />
<orderEntry type="library" exported="" name="aspectjrt-1.8.0" level="project" />
<orderEntry type="library" exported="" name="floatingactionbutton-1.1.0" level="project" />
<orderEntry type="library" exported="" name="library-1.0.6" level="project" />
<orderEntry type="library" exported="" name="recyclerview-v7-21.0.3" level="project" />
<orderEntry type="library" exported="" name="support-v4-21.0.3" level="project" />
<orderEntry type="library" exported="" name="support-annotations-21.0.3" level="project" />
<orderEntry type="library" exported="" name="cardview-v7-21.0.3" level="project" />
<orderEntry type="library" exported="" name="isoparser-1.0.2" level="project" />
</component>
</module>
1 change: 1 addition & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,5 @@ dependencies {
compile 'com.android.support:recyclerview-v7:21.0.+'
compile 'com.melnykov:floatingactionbutton:1.1.0'
compile 'com.jpardogo.materialtabstrip:library:1.0.6'
compile 'com.googlecode.mp4parser:isoparser:1.0.2'
}
172 changes: 171 additions & 1 deletion app/src/main/java/com/danielkim/soundrecorder/DBHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,12 @@
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;

import com.danielkim.soundrecorder.listeners.OnDatabaseChangedListener;

import java.io.File;
import java.util.ArrayList;
import java.util.Comparator;

/**
Expand All @@ -24,6 +27,9 @@ public class DBHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "saved_recordings.db";
private static final int DATABASE_VERSION = 1;




public static abstract class DBHelperItem implements BaseColumns {
public static final String TABLE_NAME = "saved_recordings";

Expand All @@ -33,6 +39,14 @@ public static abstract class DBHelperItem implements BaseColumns {
public static final String COLUMN_NAME_TIME_ADDED = "time_added";
}

/**
* The class contains the info of table two.
*/
public static abstract class DBHelperItem2 implements BaseColumns {
public static final String TABLE_NAME = "saved_paused_recordings";

}

private static final String TEXT_TYPE = " TEXT";
private static final String COMMA_SEP = ",";
private static final String SQL_CREATE_ENTRIES =
Expand All @@ -43,17 +57,32 @@ public static abstract class DBHelperItem implements BaseColumns {
DBHelperItem.COLUMN_NAME_RECORDING_LENGTH + " INTEGER " + COMMA_SEP +
DBHelperItem.COLUMN_NAME_TIME_ADDED + " INTEGER " + ")";

/**
* Table two SQL -create string
*/
private static final String SQL_CREATE_ENTRIES2 =
"CREATE TABLE " + DBHelperItem2.TABLE_NAME + " (" +
DBHelperItem2._ID + " INTEGER PRIMARY KEY" + COMMA_SEP +
DBHelperItem.COLUMN_NAME_RECORDING_NAME + TEXT_TYPE + COMMA_SEP +
DBHelperItem.COLUMN_NAME_RECORDING_FILE_PATH + TEXT_TYPE + COMMA_SEP +
DBHelperItem.COLUMN_NAME_RECORDING_LENGTH + " INTEGER " + COMMA_SEP +
DBHelperItem.COLUMN_NAME_TIME_ADDED + " INTEGER " + ")";


@SuppressWarnings("unused")
private static final String SQL_DELETE_ENTRIES = "DROP TABLE IF EXISTS " + DBHelperItem.TABLE_NAME;

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_ENTRIES);
db.execSQL(SQL_CREATE_ENTRIES2);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

db.execSQL("DROP TABLE IF IT EXISTS "+ DBHelperItem.TABLE_NAME);
db.execSQL("DROP TABLE IF IT EXISTS "+ DBHelperItem2.TABLE_NAME);
onCreate(db);
}

public DBHelper(Context context) {
Expand Down Expand Up @@ -103,6 +132,22 @@ public int getCount() {
return count;
}

/**
* The method returns the count of the files created in table 2 when the paused button is used by the user.
* @return
*/

public int getCount2() {
int count=0;
SQLiteDatabase db = getReadableDatabase();
String[] projection = { DBHelperItem._ID };
Cursor c = db.query(DBHelperItem2.TABLE_NAME, projection, null, null, null, null, null);
if(c.getCount()!=0)
count = c.getCount();
c.close();
return count;
}

public Context getContext() {
return mContext;
}
Expand All @@ -115,6 +160,16 @@ public int compare(RecordingItem item1, RecordingItem item2) {
}
}

/**
* This method stores your audio recoding in the database with following information like - recording name,
* file path and length of your audio. After saving your file info in table one. It calls deleteFilesFromTable2() to
* delete all the entries from table2.
* @param recordingName
* @param filePath
* @param length
* @return
*/

public long addRecording(String recordingName, String filePath, long length) {

SQLiteDatabase db = getWritableDatabase();
Expand All @@ -129,9 +184,85 @@ public long addRecording(String recordingName, String filePath, long length) {
mOnDatabaseChangedListener.onNewDatabaseEntryAdded();
}

db.close();

deleteFilesFromTable2();

return rowId;
}


/**
* Deletes all the entries from the table2 and also delete all the files created
* when recording audio using their absolute paths.
*/
private void deleteFilesFromTable2() {
ArrayList<String> myList = getAllAppendingFiles();

for(int i=0;i<myList.size();i++)
{

File f0 = new File( String.valueOf(myList.get(i)));
f0.delete();

}
clearTable2();
}


/**
* Stores the info of all the files created when recording the audio in table2.
* @param recordingName
* @param filePath
* @param length
* @return
*/

public long addRecording2(String recordingName, String filePath, long length) {

SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put(DBHelperItem.COLUMN_NAME_RECORDING_NAME, recordingName);
cv.put(DBHelperItem.COLUMN_NAME_RECORDING_FILE_PATH, filePath);
cv.put(DBHelperItem.COLUMN_NAME_RECORDING_LENGTH, length);
cv.put(DBHelperItem.COLUMN_NAME_TIME_ADDED, System.currentTimeMillis());
long rowId = db.insert(DBHelperItem2.TABLE_NAME, null, cv);

db.close();

return rowId;
}

/**
* Returns the absolute paths of all the files stored in table2.
* @return
*/

public ArrayList<String> getAllAppendingFiles()
{
SQLiteDatabase db = this.getWritableDatabase();

ArrayList<String> myList = new ArrayList<>();

Cursor cursor = db.query(DBHelperItem2.TABLE_NAME,new String[]{DBHelperItem.COLUMN_NAME_RECORDING_FILE_PATH
},
null,null,null,null,null);

if(cursor.moveToFirst())
{
do{
myList.add(cursor.getString(cursor.getColumnIndex(DBHelperItem.COLUMN_NAME_RECORDING_FILE_PATH)));

}while(cursor.moveToNext());
}

db.close();

return myList;


}

public void renameItem(RecordingItem item, String recordingName, String filePath) {
SQLiteDatabase db = getWritableDatabase();
ContentValues cv = new ContentValues();
Expand Down Expand Up @@ -159,4 +290,43 @@ public long restoreRecording(RecordingItem item) {
}
return rowId;
}

/**
* Clears table2.
*/

public void clearTable2() {
SQLiteDatabase db = getWritableDatabase();
int countOfRowsdeleted = db.delete(DBHelperItem2.TABLE_NAME, "1", null);
Log.d("count",String.valueOf(countOfRowsdeleted));
db.close();
}


/**
* Returns the total length of your audio recorded file by adding the time of all the files in table2.
* @return
*/

public long getTotalTime() {
SQLiteDatabase db = this.getWritableDatabase();

long time=0;

/*Cursor cursor = db.query(DBHelperItem2.TABLE_NAME,new String[]{DBHelperItem.COLUMN_NAME_RECORDING_LENGTH
},
null,null,null,null,null);*/

Cursor cur = db.rawQuery("SELECT SUM(length) FROM "+DBHelperItem2.TABLE_NAME, null);
if(cur.moveToFirst())
{
time= cur.getLong(0);
}


db.close();

return time;

}
}
Loading