请确保您的手机 Music文件夹有 mp3音乐文件 或者 .wma音乐文件,该app会自动识别该目录下的音乐文件
package com.hnkjxy.xl.a28_musicplayerservice;
import android.Manifest;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.media.MediaPlayer;
import android.os.Build;
import android.os.Handler;
import android.os.IBinder;
import android.os.Message;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.Toolbar;
import com.hnkjxy.xl.a28_musicplayerservice.entity.Music;
import com.hnkjxy.xl.a28_musicplayerservice.interfac.MusicInterface;
import com.hnkjxy.xl.a28_musicplayerservice.service.MusicService;
import com.hnkjxy.xl.a28_musicplayerservice.tool.MusicAdapter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Locale;
public class MainActivity extends AppCompatActivity implements
View.OnClickListener, SeekBar.OnSeekBarChangeListener,
AdapterView.OnItemClickListener {
private static final int MY_PERMISSION_REQUEST_CODE = 10000;
private ArrayList<Music> musics;
public static Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
int currentPosition = msg.arg1;
int duration = msg.arg2;
if (flag) {
sbMusicProgress.setProgress(currentPosition);
sbMusicProgress.setMax(duration);
tvMusicCurrentPosition.setText(getFormattedTime(currentPosition));
tvMusicDuration.setText(getFormattedTime(duration));
}
}
};
/**
* 显示歌曲列表
*/
private ListView lvMusics;
private ImageButton ibPlayPause;//播放暂停
private ImageButton ibNext;//下一首
private static SeekBar sbMusicProgress;
// private TextView tv
private static boolean flag = true;//是否更新SeekBar
//定义binder(中间人)
MusicInterface mi;
private int currentMusicIndex;
private MusicAdapter adapter;
private static TextView tvMusicCurrentPosition;
private static TextView tvMusicDuration;
private ImageButton ibPlayMode;//模式按钮
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//隐藏系统标题栏
if (getSupportActionBar() != null){
getSupportActionBar().hide();
}
//版本判断,如果是API23以下,需不需要动态申请权限
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
boolean isAllGranted;
//1. 检查权限
isAllGranted = checkPermissionAllGranted(new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
});
// 如果检查权限都赋予了,则直行相应的业务(loadData)
if (isAllGranted){
//加载数据
musics = loadData();
}
//2. 申请权限
ActivityCompat.requestPermissions(this, new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
}, MY_PERMISSION_REQUEST_CODE);
//3. 处理申请权限的返回结果, 重写onRequestPermissionsResult
}else {
musics = loadData();
}
//初始化控件
initViews();
//设置监听
setListener();
//显示歌曲列表
initMusicList();
//绑定服务
if (musics != null) {
bindSer();
}
//注册广播接收者
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("com.hnkjxy.xl.music.position");
registerReceiver(new MusiceReceiver(), intentFilter);
}
//------------显示歌曲列表-----------
private void initMusicList() {
//创建MusicAdapter
adapter = new MusicAdapter(this, musics);
//为ListView设置adapter,当此方法被调用后ListView将会显示歌曲相应信息
lvMusics.setAdapter(adapter);
}
//----------初始化控件------
private void initViews() {
lvMusics = findViewById(R.id.lv_musics);
ibPlayPause = findViewById(R.id.ib_play_or_pause);
ibNext = findViewById(R.id.ib_next);
ibPlayMode = findViewById(R.id.ib_play_mode);
sbMusicProgress = findViewById(R.id.sb_music_progress);
tvMusicCurrentPosition = findViewById(R.id.tv_music_current_position);
tvMusicDuration = (TextView)findViewById(R.id.tv_music_duration);
}
//---------控件监听-----
private void setListener(){
ibPlayPause.setOnClickListener(this);
ibNext.setOnClickListener(this);
ibPlayMode.setOnClickListener(this);
sbMusicProgress.setOnSeekBarChangeListener(this);
lvMusics.setOnItemClickListener(this);//列表单击监听
}
//按钮监听的实现方法
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.ib_play_or_pause:
//调用服务里的MediaPlayer中的start()
//判断是否在播放,如果播放则切换到暂停图片
if (mi.isPlay()){
//暂停播放,并更改为暂停图片
mi.pause();
ibPlayPause.setImageResource(R.drawable.selector_button_play);
return;
}else {
mi.play();
// ibPlayPause.setImageResource(R.drawable.selector_button_pause);
}
break;
case R.id.ib_next:
mi.next();
break;
case R.id.ib_play_mode:
switchPlayMode();//更改播放模式
break;
}
setPlayMode(currentMusicIndex);
}
private int playMode = 0;
private static final int PLAY_REPEAT = 0;//列表循环
private static final int PLAY_SINGLE = 1;//单曲循环
private static final int PLAY_RANDOM = 2;//随机
private static final int[] playModeRes = {
R.drawable.selector_button_mode_repeat,
R.drawable.selector_button_mode_single,
R.drawable.selector_button_mode_random
};
//更改播放模式
private void switchPlayMode() {
playMode ;
playMode %= playModeRes.length;
ibPlayMode.setImageResource(playModeRes[playMode]);
mi.changeMode(playMode);
}
//------更改播放状态----
public void setPlayMode(int currentPosition){
ibPlayPause.setImageResource(R.drawable.selector_button_pause);
for (Music m: musics) {
m.setPlaying(false);
}
musics.get(currentPosition).setPlaying(true);
adapter.notifyDataSetChanged();
}
//绑定服务
private void bindSer(){
Intent intent = new Intent(this, MusicService.class);
//给MusicService传参数, 传什么参数?(歌名、时长、歌手....)ArrayList<Music>
//问: 如果先启动service, 后加载数据(超大),能给Service传递ArrayList<Music>数据吗
Bundle bundle = new Bundle();
bundle.putSerializable("musics", musics);
intent.putExtras(bundle);
bindService(intent, new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
mi = (MusicInterface) iBinder;//获取中间人
}
@Override
public void onServiceDisconnected(ComponentName componentName) {
}
}, Context.BIND_AUTO_CREATE);
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == MY_PERMISSION_REQUEST_CODE){
boolean isAllGranted = true;
//判断是否所有权限都已经授权
for (int grant : grantResults){
if (grant != PackageManager.PERMISSION_GRANTED){
isAllGranted = false;
break;
}
if (isAllGranted){
musics = loadData();
}else {
Toast.makeText(this, "需要授权", Toast.LENGTH_SHORT).show();
}
}
}
}
//检查权限
private boolean checkPermissionAllGranted(String[] permissions){
boolean isAllGranted = true;
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission)
!= PackageManager.PERMISSION_GRANTED){
//没有权限
isAllGranted = false;
return isAllGranted;
}
}
return isAllGranted;
}
private ArrayList<Music> loadData() {
// 创建歌曲数据的对象
ArrayList<Music> list = new ArrayList<>();
Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
new String[]{MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.YEAR,
MediaStore.Audio.Media.MIME_TYPE,
MediaStore.Audio.Media.SIZE,
MediaStore.Audio.Media.DATA},
MediaStore.Audio.Media.MIME_TYPE "=? or "
MediaStore.Audio.Media.MIME_TYPE "=?",
new String[]{"audio/mpeg", "audio/x-ms-wma"}, null
);
if (cursor.moveToFirst()) {
Music music = null;
do {
music = new Music();
// 文件名
music.setFileName(cursor.getString(1));
// 歌曲名
music.setTitle(cursor.getString(2));
// 时长
music.setDuration(cursor.getInt(3));
// 歌手名
music.setSinger(cursor.getString(4));
// 专辑名
music.setAlbum(cursor.getString(5));
// 年代
if (cursor.getString(6) != null) {
music.setYear(cursor.getString(6));
} else {
music.setYear("未知");
}
// 歌曲格式
if ("audio/mpeg".equals(cursor.getString(7).trim())) {
music.setType("mp3");
} else if ("audio/x-ms-wma".equals(cursor.getString(7).trim())) {
music.setType("wma");
}
// 文件大小
if (cursor.getString(8) != null) {
float size = cursor.getInt(8) / 1024f / 1024f;
music.setSize((size "").substring(0, 4) "M");
} else {
music.setSize("未知");
}
// 文件路径
if (cursor.getString(9) != null) {
music.setFileUrl(cursor.getString(9));
}
Log.i("xl_hsj", music.toString());
list.add(music);
} while (cursor.moveToNext());
cursor.close();
}
return list;
}
//TODO seekBar监听
@Override
public void onProgressChanged(SeekBar seekBar, int i, boolean b) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
flag = !flag;
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
flag = !flag;
//从指定位置开始播放
mi.seekTo(seekBar.getProgress());
}
//------------列表监听------------
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
mi.play(i);//播放指定位置的歌曲
}
class MusiceReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
if ("com.hnkjxy.xl.music.position".equals(intent.getAction())){
//获取当前歌曲的索引,并设置高亮
setPlayMode(intent.getIntExtra("POSITION", 0));
}
}
}
//--------------格式化时间
private static SimpleDateFormat sdf =
new SimpleDateFormat("mm:ss",Locale.CHINA);
private static Date date = new Date();
private static String getFormattedTime(long timeMillis){
date.setTime(timeMillis);
return sdf.format(date);
}
}
资源文件列表
28_MusicPlayerService/.gitignore , 127
28_MusicPlayerService/.gradle/4.1/fileChanges/last-build.bin , 1
28_MusicPlayerService/.gradle/4.1/fileContent/fileContent.lock , 17
28_MusicPlayerService/.gradle/4.1/fileHashes/fileHashes.bin , 163733
28_MusicPlayerService/.gradle/4.1/fileHashes/fileHashes.lock , 17
28_MusicPlayerService/.gradle/4.1/fileHashes/resourceHashesCache.bin , 19959
28_MusicPlayerService/.gradle/4.1/javaCompile/classAnalysis.bin , 845286
28_MusicPlayerService/.gradle/4.1/javaCompile/jarAnalysis.bin , 325452
28_MusicPlayerService/.gradle/4.1/javaCompile/javaCompile.lock , 17
28_MusicPlayerService/.gradle/4.1/javaCompile/taskHistory.bin , 1001182
28_MusicPlayerService/.gradle/4.1/javaCompile/taskJars.bin , 20870
28_MusicPlayerService/.gradle/4.1/taskHistory/fileSnapshots.bin , 1745077
28_MusicPlayerService/.gradle/4.1/taskHistory/taskHistory.bin , 53702
28_MusicPlayerService/.gradle/4.1/taskHistory/taskHistory.lock , 17
28_MusicPlayerService/.gradle/buildOutputCleanup/built.bin , 0
28_MusicPlayerService/.gradle/buildOutputCleanup/cache.properties , 51
28_MusicPlayerService/.gradle/buildOutputCleanup/cache.properties.lock , 2
28_MusicPlayerService/.idea/gradle.xml , 626
28_MusicPlayerService/.idea/libraries/android_arch_core_common_1_0_0_jar.xml , 533
28_MusicPlayerService/.idea/libraries/android_arch_lifecycle_common_1_0_0_jar.xml , 548
28_MusicPlayerService/.idea/libraries/android_arch_lifecycle_runtime_1_0_0.xml , 658
28_MusicPlayerService/.idea/libraries/com_android_support_animated_vector_drawable_26_1_0.xml , 742
28_MusicPlayerService/.idea/libraries/com_android_support_appcompat_v7_26_1_0.xml , 682
28_MusicPlayerService/.idea/libraries/com_android_support_constraint_constraint_layout_1_1_0.xml , 501
28_MusicPlayerService/.idea/libraries/com_android_support_constraint_constraint_layout_solver_1_1_0_jar.xml , 425
28_MusicPlayerService/.idea/libraries/com_android_support_support_annotations_26_1_0_jar.xml , 608
28_MusicPlayerService/.idea/libraries/com_android_support_support_annotations_27_1_1_jar.xml , 609
28_MusicPlayerService/.idea/libraries/com_android_support_support_compat_26_1_0.xml , 692
28_MusicPlayerService/.idea/libraries/com_android_support_support_core_ui_26_1_0.xml , 697
28_MusicPlayerService/.idea/libraries/com_android_support_support_core_utils_26_1_0.xml , 712
28_MusicPlayerService/.idea/libraries/com_android_support_support_fragment_26_1_0.xml , 702
28_MusicPlayerService/.idea/libraries/com_android_support_support_media_compat_26_1_0.xml , 722
28_MusicPlayerService/.idea/libraries/com_android_support_support_v4_26_1_0.xml , 672
28_MusicPlayerService/.idea/libraries/com_android_support_support_vector_drawable_26_1_0.xml , 737
28_MusicPlayerService/.idea/libraries/com_android_support_test_espresso_espresso_core_3_0_2.xml , 710
28_MusicPlayerService/.idea/libraries/com_android_support_test_espresso_espresso_idling_resource_3_0_2.xml , 765
28_MusicPlayerService/.idea/libraries/com_android_support_test_monitor_1_0_2.xml , 662
28_MusicPlayerService/.idea/libraries/com_android_support_test_runner_1_0_2.xml , 657
28_MusicPlayerService/.idea/libraries/com_google_code_findbugs_jsr305_2_0_1_jar.xml , 359
28_MusicPlayerService/.idea/libraries/com_squareup_javawriter_2_1_1_jar.xml , 538
28_MusicPlayerService/.idea/libraries/javax_inject_javax_inject_1_jar.xml , 528
28_MusicPlayerService/.idea/libraries/junit_junit_4_12_jar.xml , 487
28_MusicPlayerService/.idea/libraries/net_sf_kxml_kxml2_2_3_0_jar.xml , 285
28_MusicPlayerService/.idea/libraries/org_hamcrest_hamcrest_core_1_3_jar.xml , 543
28_MusicPlayerService/.idea/libraries/org_hamcrest_hamcrest_integration_1_3_jar.xml , 578
28_MusicPlayerService/.idea/libraries/org_hamcrest_hamcrest_library_1_3_jar.xml , 557
28_MusicPlayerService/.idea/misc.xml , 1611
28_MusicPlayerService/.idea/modules.xml , 379
28_MusicPlayerService/.idea/runConfigurations.xml , 564
28_MusicPlayerService/.idea/workspace.xml , 187296
28_MusicPlayerService/28_MusicPlayerService.iml , 875
28_MusicPlayerService/app/.gitignore , 8
28_MusicPlayerService/app/app.iml , 11636
28_MusicPlayerService/app/build.gradle , 969
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-anydpi-v21/ic_launcher_background.xml , 5776
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-hdpi/ic_launcher_background.png , 828
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-ldpi/ic_launcher_background.png , 330
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-mdpi/ic_launcher_background.png , 409
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-xhdpi/ic_launcher_background.png , 1238
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-xxhdpi/ic_launcher_background.png , 2830
28_MusicPlayerService/app/build/generated/res/pngs/debug/drawable-xxxhdpi/ic_launcher_background.png , 4721
28_MusicPlayerService/app/build/generated/source/buildConfig/debug/com/hnkjxy/xl/a28_musicplayerservice/BuildConfig.java , 479
28_MusicPlayerService/app/build/generated/source/r/debug/android/arch/lifecycle/R.java , 252
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/compat/R.java , 7739
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/constraint/R.java , 19029
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/coreui/R.java , 7739
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/coreutils/R.java , 7742
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/fragment/R.java , 7741
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/graphics/drawable/animated/R.java , 7759
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/graphics/drawable/R.java , 7750
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/mediacompat/R.java , 9594
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/v4/R.java , 9585
28_MusicPlayerService/app/build/generated/source/r/debug/android/support/v7/appcompat/R.java , 116815
28_MusicPlayerService/app/build/generated/source/r/debug/com/hnkjxy/xl/a28_musicplayerservice/R.java , 604753
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/debug.json , 150598
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-af.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-am.json , 1089
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ar.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-az.json , 1073
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-b+sr+Latn.json , 1122
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-be.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-bg.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-bn.json , 1097
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-bs.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ca.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-cs.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-da.json , 1091
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-de.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-el.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-en-rAU.json , 1107
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-en-rGB.json , 1107
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-en-rIN.json , 1107
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-es-rUS.json , 1111
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-es.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-et.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-eu.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-fa.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-fi.json , 1091
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-fr-rCA.json , 1112
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-fr.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-gl.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-gu.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-h720dp-v13.json , 775
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-hdpi-v4.json , 804
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-hi.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-hr.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-hu.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-hy.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-in.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-is.json , 1090
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-it.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-iw.json , 1090
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ja.json , 1087
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ka.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-kk.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-km.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-kn.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ko.json , 1085
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ky.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-land.json , 796
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-large-v4.json , 890
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ldltr-v21.json , 772
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-lo.json , 1091
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-lt.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-lv.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-mk.json , 1056
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ml.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-mn.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-mr.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ms.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-my.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-nb.json , 1089
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ne.json , 1097
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-night-v8.json , 859
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-nl.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-pa.json , 1091
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-pl.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-port.json , 751
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-pt-rBR.json , 1112
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-pt-rPT.json , 1112
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-pt.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ro.json , 1096
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-ru.json , 1095
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-si.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sk.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sl.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sq.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sr.json , 1094
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sv.json , 1093
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sw.json , 1092
28_MusicPlayerService/app/build/intermediates/blame/res/debug/multi-v2/values-sw600dp-v13.json , 884
最多只能显示150条信息!
