sunshineDeom 2016-11-01 13:49 采纳率: 0%
浏览 865

安卓音乐播放器 下一首功能提示Array为空

listview界面代码
package com.sunshine.music.easyapp;
import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.content.ServiceConnection; import android.database.Cursor; import android.os.Bundle; import android.os.IBinder; import android.provider.MediaStore; import android.view.View; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast;
import java.io.Serializable; import java.util.ArrayList; import java.util.List;
/**
Created by 95 on 2016/10/27. */ public class listView_loaclMusic extends Activity { private ListView local_listView; private ServiceActivity.LocalBinder localBinder; private String url; private int musicPosition; private List musicInfos = new ArrayList<>(); private ServiceConnection serviceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
localBinder = (ServiceActivity.LocalBinder) service;
}

@Override
public void onServiceDisconnected(ComponentName name) {

}

};
private String[] musicUrl;
private Bundle bundle;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.listview_loaclmusic);

bundle = new Bundle();

//绑定服务
bindService(new Intent(listView_loaclMusic.this, ServiceActivity.class), serviceConnection, BIND_AUTO_CREATE);

local_listView = (ListView) findViewById(R.id.localMusic_listView);



getMp3();
OnClickItem();

Adapter adapter = new Adapter(listView_loaclMusic.this, musicInfos);
local_listView.setAdapter(adapter);

}

//通过系统提供的音乐数据库获取音乐文件信息
public void getMp3() {
Cursor mAudioCursor = this.getContentResolver().query(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
null,// 字段 没有字段 就是查询所有信息 相当于SQL语句中的 “ * ”
null, // 查询条件
null, // 条件的对应?的参数
MediaStore.Audio.AudioColumns.TITLE);// 排序方式
// 循环输出歌曲的信息
for (int i = 0; i < mAudioCursor.getCount(); i++) {
mAudioCursor.moveToNext();
// 找到歌曲标题和总时间对应的列索引
long id = mAudioCursor.getLong(mAudioCursor.getColumnIndex(MediaStore.Audio.Media._ID)); // 音乐id
String title = mAudioCursor.getString((mAudioCursor.getColumnIndex(MediaStore.Audio.Media.TITLE)));// 音乐标题
String artist = mAudioCursor.getString(mAudioCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));// 艺术家
long duration = mAudioCursor.getLong(mAudioCursor.getColumnIndex(MediaStore.Audio.Media.DURATION));// 时长
long size = mAudioCursor.getLong(mAudioCursor.getColumnIndex(MediaStore.Audio.Media.SIZE)); // 文件大小
String url = mAudioCursor.getString(mAudioCursor.getColumnIndex(MediaStore.Audio.Media.DATA)); // 文件路径
int isMusic = mAudioCursor.getInt(mAudioCursor.getColumnIndex(MediaStore.Audio.Media.IS_MUSIC));// 是否为音乐
if (isMusic != 0) {//只有当是音乐的时候才保存
musicInfos.add(new MusicInfo(id, title, artist, duration, size, url));
musicUrl = new String[mAudioCursor.getCount()];

    }
}

}

//本地音乐列表点击事件
public void OnClickItem() {
local_listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
String title = musicInfos.get(position).getTitle();
Toast.makeText(listView_loaclMusic.this, "开始播放" + title, Toast.LENGTH_SHORT).show();
//获取被点击的音乐的存储路径
url = musicInfos.get(position).getUrl();
//创建Intent并发送url
Intent urlIntent = new Intent();
urlIntent.putExtra("url", url);
urlIntent.setClass(listView_loaclMusic.this, ServiceActivity.class);
urlIntent.putExtra("musicUrl", (Serializable)musicInfos);
startService(urlIntent);
//sendBroadcast(urlIntent);
localBinder.Start();
}
});
}

//本地音乐列表长按事件
public void OnLongLickItem() {
local_listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return false;
}
});
}
}

下一首按钮:
localBinder.nextMusic();

  • 写回答

1条回答 默认 最新

  • devmiao 2016-11-01 15:55
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)
  • ¥15 用前端向数据库插入数据,通过debug发现数据能走到后端,但是放行之后就会提示错误
  • ¥30 3天&7天&&15天&销量如何统计同一行
  • ¥30 帮我写一段可以读取LD2450数据并计算距离的Arduino代码
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)