diff --git a/app/build.gradle b/app/build.gradle
index 2cb90c2..a5f2993 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -57,5 +57,5 @@ android {
dependencies {
testImplementation 'junit:junit:4.12'
- implementation 'com.github.axet:android-audio-library:1.0.142' // implementation project(':android-audio-library')
+ implementation 'com.github.axet:android-audio-library:1.0.143' // implementation project(':android-audio-library')
}
diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java
index afeb2c0..c150bc5 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java
@@ -2,7 +2,6 @@ package com.github.axet.audiorecorder.activities;
import android.app.KeyguardManager;
import android.content.Context;
-import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Configuration;
@@ -24,16 +23,15 @@ import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
-import com.github.axet.androidlibrary.app.SuperUser;
import com.github.axet.androidlibrary.services.StorageProvider;
import com.github.axet.androidlibrary.widgets.AboutPreferenceCompat;
import com.github.axet.androidlibrary.widgets.AppCompatThemeActivity;
import com.github.axet.androidlibrary.widgets.ErrorDialog;
import com.github.axet.androidlibrary.widgets.SearchView;
-import com.github.axet.audiolibrary.app.Recordings;
import com.github.axet.audiolibrary.app.Storage;
import com.github.axet.audiorecorder.R;
import com.github.axet.audiorecorder.app.AudioApplication;
+import com.github.axet.audiorecorder.app.Recordings;
import com.github.axet.audiorecorder.services.RecordingService;
public class MainActivity extends AppCompatThemeActivity {
@@ -47,8 +45,6 @@ public class MainActivity extends AppCompatThemeActivity {
ListView list;
Recordings recordings;
Storage storage;
- View progressEmpty;
- View progressText;
ScreenReceiver receiver;
@@ -74,9 +70,6 @@ public class MainActivity extends AppCompatThemeActivity {
setContentView(R.layout.activity_main);
- progressEmpty = findViewById(R.id.progress_empty);
- progressText = findViewById(R.id.progress_text);
-
storage = new Storage(this);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
@@ -93,6 +86,7 @@ public class MainActivity extends AppCompatThemeActivity {
});
list = (ListView) findViewById(R.id.list);
+ list.setEmptyView(findViewById(R.id.empty_list));
recordings = new Recordings(this, list) {
@Override
public void showDialog(AlertDialog.Builder e) {
@@ -102,7 +96,6 @@ public class MainActivity extends AppCompatThemeActivity {
}
};
list.setAdapter(recordings);
- list.setEmptyView(findViewById(R.id.empty_list));
recordings.setToolbar((ViewGroup) findViewById(R.id.recording_toolbar));
RecordingService.startIfPending(this);
@@ -213,8 +206,8 @@ public class MainActivity extends AppCompatThemeActivity {
@Override
public void run() {
final int selected = getLastRecording(last);
- progressEmpty.setVisibility(View.GONE);
- progressText.setVisibility(View.VISIBLE);
+ recordings.progressEmpty.setVisibility(View.GONE);
+ recordings.progressText.setVisibility(View.VISIBLE);
if (selected != -1) {
recordings.select(selected);
list.smoothScrollToPosition(selected);
@@ -227,8 +220,8 @@ public class MainActivity extends AppCompatThemeActivity {
}
}
};
- progressEmpty.setVisibility(View.VISIBLE);
- progressText.setVisibility(View.GONE);
+ recordings.progressEmpty.setVisibility(View.VISIBLE);
+ recordings.progressText.setVisibility(View.GONE);
recordings.load(!last.isEmpty(), done);
diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/Recordings.java b/app/src/main/java/com/github/axet/audiorecorder/app/Recordings.java
new file mode 100644
index 0000000..1a4d977
--- /dev/null
+++ b/app/src/main/java/com/github/axet/audiorecorder/app/Recordings.java
@@ -0,0 +1,55 @@
+package com.github.axet.audiorecorder.app;
+
+import android.content.Context;
+import android.net.Uri;
+import android.util.Log;
+import android.view.View;
+import android.widget.ListView;
+import android.widget.TextView;
+
+import com.github.axet.androidlibrary.widgets.ErrorDialog;
+import com.github.axet.audiorecorder.R;
+
+import java.util.ArrayList;
+
+public class Recordings extends com.github.axet.audiolibrary.app.Recordings {
+ public View progressEmpty;
+ public TextView progressText;
+ public View refresh;
+
+ public Recordings(Context context, ListView list) {
+ super(context, list);
+ View empty = list.getEmptyView();
+ progressEmpty = empty.findViewById(R.id.progress_empty);
+ progressText = (TextView) empty.findViewById(android.R.id.text1);
+ refresh = empty.findViewById(R.id.refresh);
+ refresh.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ load(false, null);
+ }
+ });
+ }
+
+ @Override
+ public void load(Uri mount, boolean clean, Runnable done) {
+ refresh.setVisibility(View.GONE);
+ progressText.setText(R.string.recording_list_is_empty);
+ if (!Storage.exists(getContext(), mount)) {
+ clear();
+ if (done != null)
+ done.run();
+ return;
+ }
+ try {
+ super.load(mount, clean, done);
+ } catch (RuntimeException e) {
+ Log.e(TAG, "load", e);
+ progressText.setText(ErrorDialog.toMessage(e));
+ refresh.setVisibility(View.VISIBLE);
+ clear();
+ if (done != null)
+ done.run();
+ }
+ }
+}
diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java
index 00c9bc8..998268c 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java
@@ -184,12 +184,19 @@ public class RecordingService extends Service {
if (duration != null) {
title += " (" + duration + ")";
if (notificationIntent != null && notificationIntent.hasExtra("duration") && notificationIntent.getBooleanExtra("recording", false)) { // speed up
- RemoteViews a = new RemoteViews(getPackageName(), notification.contentView.getLayoutId());
- a.setTextViewText(R.id.title, title);
- RemoteViewsCompat.mergeRemoteViews(notification.contentView, a);
- if (Build.VERSION.SDK_INT >= 16 && notification.bigContentView != null)
- RemoteViewsCompat.mergeRemoteViews(notification.bigContentView, a);
- return notification;
+ try {
+ RemoteViews a = new RemoteViews(getPackageName(), notification.contentView.getLayoutId());
+ a.setTextViewText(R.id.title, title);
+ RemoteViewsCompat.mergeRemoteViews(notification.contentView, a);
+ if (Build.VERSION.SDK_INT >= 16 && notification.bigContentView != null) {
+ a = new RemoteViews(getPackageName(), notification.bigContentView.getLayoutId());
+ a.setTextViewText(R.id.title, title);
+ RemoteViewsCompat.mergeRemoteViews(notification.bigContentView, a);
+ }
+ return notification;
+ } catch (RuntimeException e) {
+ Log.d(TAG, "merge failed", e);
+ }
}
}
text = ".../" + targetFile;
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index 80e9149..26989d9 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -5,9 +5,9 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
+ android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior"
tools:context=".activities.MainActivity"
tools:showIn="@layout/activity_main">
@@ -42,8 +42,15 @@
android:layout_margin="10dp"
android:indeterminate="true" />
+
+