¿Es posible filtrar con la duración del archivo .mp3 Mientras utiliza Intent.createchooser?

En mi aplicación android estoy usando el código a continuación para listar los archivos mp3 para seleccionar y subir.
Quiero saber si es posible filtrar los archivos con su duración junto con su tipo.

Intent intent = new Intent(); intent.setType("audio/*"); intent.setAction(Intent.ACTION_GET_CONTENT); try { startActivityForResult(Intent.createChooser(intent, "Select your Audio"), Global.FILE_FROM_SD); } catch (android.content.ActivityNotFoundException ex) { // Potentially direct the user to the Market with a Dialog Toast.makeText(WizardStep1.this, "Please install a File Manager.", Toast.LENGTH_SHORT).show(); } 

No lo creo, o al menos no la forma en que comenzó.

Creo que una vez que creó el selector de intenciones y abrió otro gestor de archivos, entonces no se puede controlar qué datos para mostrar ese gestor de archivos en particular, como filtrado por un criterio particular.

La solución que veo aquí es crear un método que devuelva todos los archivos de audio de sdcard a una matriz, luego use un filtro para determinar la extensión de sus archivos (.mp3) en combinación con un método que obtenga la duración de un archivo .
Agregue el contenido filtrado a una nueva matriz y, a continuación, haga lo que quiera con sus archivos filtrados, por ejemplo, muestre en un ListView y deje que el usuario seleccione los que desea cargar.

Un pseudocódigo se verá así:

 ArrayList<String> filteredFiles = new ArrayList<String>(); String[] audioFiles = getAllAudioFiles(); for (String file : audioFiles) { if (file.endsWith(".mp3") && getDuration(file) >= DURATION_CONSTANT) { filteredFiles.add(file); } } 

A continuación, muestre el contenido de filteredFiles en un ListView y proporcione la lógica apropiada para seleccionar / cargar el archivo.

AFAIK, esto no es posible. El receptor intención puede manejar un tipo MIME como audio/*

Propósito de los tipos MIME son para expresar el tipo de medios que espera / solicitud / aceptar. No admite ningún atributo (AFAIK)

Incluso si lo hiciera, no creo que más de un puñado de aplicaciones de Android se molestaría en apoyar a cumplir su escenario.

Usted tendrá una mejor suerte que pasa la aplicación de datos específicos "extra" utilizando Intent.putExtra (nombre de la cadena, el valor del paquete) si usted puede encontrar una aplicación que admita la aceptación de estos datos adicionales. La popular aplicación Explorador de archivos de ES no parece darle soporte, por lo que no creo que esto funcione para la mayoría de sus usuarios.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.