Я использую следующий код, чтобы получить список песен на моем устройстве. В конце концов я хотел бы сделать больше с ними, но, чтобы начать работу, я хочу найти аудио/музыку на устройстве Android.
Я использовал этот код для запроса в хранилище носителей, и я продолжаю получать нулевой курсор... Я проверил эти ответы, но они либо не имеют отношения к делу, либо я не понимаю их достаточно для их реализации...
Поблагодарили бы за любую помощь! заранее спасибо
public class AudioFinalActivity extends Activity {
private TextView tv;
private String res;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// link text view obj
tv = (TextView) findViewById(R.id.tv);
res = "";
String[] proj = { MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Artists.ARTIST };
// managed query doesn't need startManagingCursor called on the
Cursor c = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
proj, null, null, null);
// ContentResolver contentResolver = getContentResolver();
// String[] columns = { MediaColumns.TITLE, AudioColumns.DURATION,
// MediaColumns.DATA
// // add more columns if you want to fetch more data
// };
//
// Cursor c = contentResolver.query(
// MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns, null,
// null, null);
if (c != null) {
Log.d("AFA", "Cursor returned NULL");
} else if (c.getCount() < 1) {
Log.d("AFA", "Cursor query is empty.. :( ...");
} else {
// do stuff with our content...
while (c.moveToNext()) {
//String title = c.getString(c
.getColumnIndex(MediaColumns.TITLE));
//Long duration = c.getLong(c
.getColumnIndex(AudioColumns.DURATION));
//String data = c.getString(c
.getColumnIndex(MediaColumns.DATA));
//res += title + "\n";
res += c.getString(c.getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME)) + "\n";
tv.setText(res);
}
}
}
}
Я фондовый музыкальный плеер может воспроизводить мои телефоны аудио просто отлично..
РЕДАКТИРОВАТЬ:
Я просто удалил проверку на то, что курсор пуст, и для курсора будет null, и я, кажется, получаю результат.. странно, почему курсор имеет значение null еще while (c.MoveToNext())... возвращает значения... hmmm
ваша проверка - if (c != null) {}
, но я полагаю, что это if (c == null) {}
(если вы проверяете, что курсор равен нулю)