diff --git a/debug/build.gradle b/debug/build.gradle
index 23c69777..b173154d 100644
--- a/debug/build.gradle
+++ b/debug/build.gradle
@@ -45,4 +45,6 @@ dependencies {
implementation 'com.google.android.exoplayer:exoplayer-hls:2.11.7'
implementation 'com.android.support:multidex:1.0.3'
+
+ implementation 'com.permissionx.guolindev:permissionx:1.4.0'
}
diff --git a/debug/src/main/AndroidManifest.xml b/debug/src/main/AndroidManifest.xml
index d1efa548..576bfaf9 100644
--- a/debug/src/main/AndroidManifest.xml
+++ b/debug/src/main/AndroidManifest.xml
@@ -8,6 +8,8 @@
+
+
mAudioScanner;
+ private boolean mStartScannerOnGranted;
+
+ private ProgressBar mScannerProgress;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -39,6 +55,9 @@ protected void onCreate(Bundle savedInstanceState) {
tvMediaSessionState = binding.tvMediaSessionState;
+ mAudioScanner = new AudioScanner<>(this, new AudioScanner.AudioItemConverter());
+ mScannerProgress = findViewById(R.id.scanner_progress);
+
if (playerViewModel.isInitialized()) {
mPlayerClient = playerViewModel.getPlayerClient();
return;
@@ -70,6 +89,26 @@ public void onTimerEnd() {
});
}
+ private void requestPermission() {
+ PermissionX.init(this)
+ .permissions(Manifest.permission.READ_EXTERNAL_STORAGE)
+ .request(new RequestCallback() {
+ @Override
+ public void onResult(boolean allGranted, List grantedList, List deniedList) {
+ if (deniedList.contains(Manifest.permission.READ_EXTERNAL_STORAGE)) {
+ Toast.makeText(MainActivity.this,
+ "Need permission: READ_EXTERNAL_STORAGE",
+ Toast.LENGTH_SHORT).show();
+ return;
+ }
+
+ if (mStartScannerOnGranted) {
+ startAudioScanner();
+ }
+ }
+ });
+ }
+
@SuppressLint("SetTextI18n")
public void onClick(View view) {
int id = view.getId();
@@ -100,7 +139,49 @@ public void onConnected(boolean success) {
if (id == R.id.btnSetPlaylist) {
mPlayerClient.setPlaylist(createPlaylist());
+ return;
+ }
+
+ if (id == R.id.btn_start_scanner) {
+ if (!PermissionX.isGranted(this, Manifest.permission.READ_EXTERNAL_STORAGE)) {
+ mStartScannerOnGranted = true;
+ requestPermission();
+ return;
+ }
+
+ startAudioScanner();
+ return;
}
+
+ if (id == R.id.btn_cancel_scanner) {
+ mAudioScanner.cancel();
+ }
+ }
+
+ private void startAudioScanner() {
+ mAudioScanner.scan(new AudioScanner.OnProgressUpdateListener() {
+ @Override
+ public void onStart() {
+ mScannerProgress.setProgress(0);
+ }
+
+ @Override
+ public void onProgressUpdate(int progress) {
+ mScannerProgress.setProgress(progress);
+ }
+
+ @Override
+ public void onEnd(@NonNull List audioList, boolean cancelled) {
+ // DEBUG
+ Log.d("DEBUG", "***************************************************");
+ Log.d("DEBUG", "cancelled: " + cancelled);
+ Log.d("DEBUG", "size : " + audioList.size());
+ for (AudioScanner.AudioItem audioItem : audioList) {
+ Log.d("DEBUG", "item : " + audioItem.toString());
+ }
+ Log.d("DEBUG", "***************************************************");
+ }
+ });
}
private Playlist createPlaylist() {
diff --git a/debug/src/main/res/layout/activity_main.xml b/debug/src/main/res/layout/activity_main.xml
index 5d485490..c59f2600 100644
--- a/debug/src/main/res/layout/activity_main.xml
+++ b/debug/src/main/res/layout/activity_main.xml
@@ -1,5 +1,6 @@
-
+
@@ -12,7 +13,6 @@
+
+
+
+
+
+
+
+
+
+
+
+