package com.genius.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import com.genius.adapter.GridViewAdapter;
import com.genius.adapter.ListViewAdapter;
import com.genius.interfaces.IOnServiceConnectComplete;
import com.genius.interfaces.IOnSliderHandleViewClickListener;
import com.genius.musicplay.MusicData;
import com.genius.musicplay.MusicPlayMode;
import com.genius.musicplay.MusicPlayState;
import com.genius.service.ServiceManager;
import com.genius.widget.GalleryFlow;
import com.genius.widget.ImageAdapter;
import com.genius.widget.MySlidingDrawer;
import android.R.bool;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.SearchManager.OnDismissListener;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.Cursor;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.LevelListDrawable;
import android.opengl.Visibility;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.provider.MediaStore;
import android.util.Log;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.GridView;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.PopupWindow;
import android.widget.SeekBar;
import android.widget.SlidingDrawer;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.SlidingDrawer.OnDrawerCloseListener;
import android.widget.SlidingDrawer.OnDrawerOpenListener;
public class MusicPlayActivity extends Activity implements IOnServiceConnectComplete{
/** Called when the activity is first created. */
private final static String TAG = "MusicPlayActivity";
private final String BROCAST_NAME = "com.genius.musicplay.brocast";
private final static int REFRESH_PROGRESS_EVENT = 0x100;
private final static int ABOUT_DIALOG_ID = 1;
private Handler mHandler;
private UIManager mUIManager;
private ServiceManager mServiceManager;
private MusicTimer mMusicTimer;
private MusicPlayStateBrocast mPlayStateBrocast;
private SDStateBrocast mSDStateBrocast;
private List<MusicData> m_MusicFileList;
private ListViewAdapter mListViewAdapter;
private boolean mIsSdExist = false;
private boolean mIsHaveData = false;
private int mCurMusicTotalTime = 0;
private int mCurPlayMode = MusicPlayMode.MPM_LIST_LOOP_PLAY;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
long time1 = System.currentTimeMillis();
init();
long time2 = System.currentTimeMillis();
Log.i(TAG, "initView cost = " + (time2 - time1));
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
mMusicTimer.stopTimer();
unregisterReceiver(mPlayStateBrocast);
unregisterReceiver(mSDStateBrocast);
mServiceManager.disconnectService();
}
public void onResume()
{
super.onResume();
Log.i(TAG, "onResume");
}
public void onStart()
{
super.onStart();
Log.i(TAG, "onStart");
}
@Override
protected Dialog onCreateDialog(int id) {
// TODO Auto-generated method stub
switch(id)
{
case ABOUT_DIALOG_ID:
{
Dialog aboutDialog = new AlertDialog.Builder(MusicPlayActivity.this)
.setIcon(R.drawable.about_dialog_icon)
.setTitle(R.string.about_title_name)
.setMessage(R.string.about_content)
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
/* User clicked OK so do some stuff */
}
}).create();
return aboutDialog;
}
default:
break;
}
return null;
}
@Override
public void onBackPressed() {
// TODO Auto-generated method stub
mUIManager.Back();
}
public void init()
{
mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
switch(msg.what)
{
case REFRESH_PROGRESS_EVENT:
mUIManager.setPlayInfo(mServiceManager.getCurPosition(), mCurMusicTotalTime, null);
break;
default:
break;
}
}
};
mUIManager = new UIManager();
mServiceManager = new ServiceManager(this);
mServiceManager.setOnServiceConnectComplete(this);
mServiceManager.connectService();
mMusicTimer = new MusicTimer(mHandler, REFRESH_PROGRESS_EVENT);
m_MusicFileList = new ArrayList<MusicData>();
mListViewAdapter = new ListViewAdapter(this, m_MusicFileList);
mUIManager.mListView.setAdapter(mListViewAdapter);
mPlayStateBrocast = new MusicPlayStateBrocast();
IntentFilter intentFilter1 = new IntentFilter(BROCAST_NAME);
registerReceiver(mPlayStateBrocast, intentFilter1);
mSDStateBrocast = new SDStateBrocast();
IntentFilter intentFilter2 = new IntentFilter();
intentFilter2.addAction(Intent.ACTION_MEDIA_MOUNTED);
intentFilter2.addAction(Intent.ACTION_MEDIA_UNMOUNTED);
intentFilter2.addAction(Intent.ACTION_MEDIA_SCANNER_FINISHED);
intentFilter2.addAction(Intent.ACTION_MEDIA_EJECT);
intentFilter2.addDataScheme("file");
registerReceiver(mSDStateBrocast, intentFilter2);
}
private List<MusicData> getMusicFileList()
{
List<MusicData> list = new ArrayList<MusicData>();
String[] projection = new String[]{MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.ARTIST};
long time1 = System.currentTimeMillis();
Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI , projection, null, null, null);
if (cursor != null)
{
cursor.moveToFirst();
int colNameIndex = cursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int colTimeIndex = cursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int colPathIndex = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);
int colArtistIndex = cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int fileNum = cursor.getCount();
for(int counter = 0; counter < fileNum; counter++){
MusicData data = new MusicData();
data.mMusicName = cursor.getString(colNameIndex);
data.mMusicTime = cursor.getInt(colTimeIndex);
data.mMusicPath = cursor.getString(colPathIndex);
data.mMusicAritst = cursor.getString(colArtistIndex);
list.add(data);
cursor.moveToNext();
}
cursor.close();
}
long time2 = System.currentTimeMillis();
Log.i(TAG, "seach filelist cost = " + (time2 - time1));
return list;
}
public void showNoData()
{
Toast.makeText(this, "No Music Data...", Toast.LENGTH_SHORT).show();
}
public void rePlay()
{
if (mIsHaveData == false)
{
showNoData();
}else{
mServiceManager.rePlay();
}
}
public void play(int position)
{
if (mIsHaveDa
没有合适的资源?快使用搜索试试~ 我知道了~
Android 高仿的音乐播放器APP源码.rar
共97个文件
png:47个
xml:22个
java:18个
需积分: 50 23 下载量 123 浏览量
2019-07-10
11:36:39
上传
评论 5
收藏 349KB RAR 举报
温馨提示
Android 高仿的音乐播放器APP源码,仿的哪个播放器忘记了,界面年直去很漂亮,功能方面可在线播放一些音乐,里面有抽屉行为控件,操作时自动将触摸位置转换为屏幕坐标。 在音乐播放的幻灯片显示方面,在Z轴上正向移动camera的视角,实际效果为放大图片。如果在Y轴上移动,则图片上下移动;X轴上对应图片左右移动。在Y轴上旋转,对应图片竖向向里翻转。如果在X轴上旋转,则对应图片横向向里翻转。
资源推荐
资源详情
资源评论
收起资源包目录
MusicPlay.rar (97个子文件)
srcfans.com
MusicPlay
res
drawable-ldpi
icon.png 2KB
Thumbs.db 6KB
drawable-hdpi
progress_buffering.png 228B
menuitem_f.png 6KB
background.jpg 138KB
cut_line.png 112B
mode_order.png 1KB
listlayout_bg.9.png 864B
playcontrol_bg.png 2KB
meun_about.png 1KB
meun_setup.png 2KB
voicelayout_left_bg_normal.png 1KB
meun_syn.png 2KB
player_stop.png 2KB
mode_list_loop.png 1KB
thumb_f.png 1KB
handle_up.png 133B
listview_head.9.png 367B
about_dialog_icon.png 1KB
list_pause_icon.png 521B
player_play.png 1KB
menulayout_bg.png 2KB
prompt.png 6KB
modelayout_bg_f.png 4KB
icon.png 12KB
handle_play_normal.png 1KB
meun_exit.png 2KB
voicelayout_left_bg_f.png 4KB
list_play_icon.png 1KB
thumb_normal.png 1001B
mode_single_loop.png 1KB
Thumbs.db 104KB
progresslayout_bg.png 385B
slidercontent_bg.png 1KB
mode_random.png 1KB
menu.png 681B
modelayout_bg_normal.png 1KB
progress_playing.png 291B
handle_bar_normal.png 3KB
handle_down.png 130B
player_pause.png 2KB
ablum_deflaut.png 37KB
voice.png 1KB
handlelayout_bg.png 2KB
player_pre.png 727B
handle_bar_f.png 10KB
player_next.png 734B
handle_pause_normal.png 1KB
ablumlayout_bg.png 3KB
drawable
shape_line.xml 197B
selector_handle_bar.xml 287B
selector_music_btn.xml 297B
selector_menu_item.xml 220B
selector_list_item.xml 187B
selector_mode_set.xml 359B
selector_volum_set.xml 377B
shape_list_item.xml 666B
shape_music_btn.xml 408B
menu_image_list.xml 418B
seekbar_thumb.xml 267B
seekbar_style.xml 663B
values
attr.xml 256B
strings.xml 1KB
color.xml 111B
drawable-mdpi
icon.png 3KB
Thumbs.db 5KB
layout
listview_item.xml 2KB
sliderdrawer_content_layout.xml 6KB
main.xml 2KB
menu.xml 508B
menu_item.xml 621B
sliderdrawer_handle_layout.xml 3KB
assets
default.properties 362B
gen
com
genius
aidl
MusicConnect.java 14KB
musicplay
demo
R.java 7KB
proguard.cfg 1KB
src
com
genius
aidl
MusicConnect.aidl 648B
musicplay
MusicData.aidl 58B
MusicData.java 2KB
MusicPlayState.java 833B
MusicPlayer.java 8KB
MusicPlayMode.java 326B
adapter
ListViewAdapter.java 3KB
GridViewAdapter.java 2KB
interfaces
IOnSliderHandleViewClickListener.java 151B
IOnServiceConnectComplete.java 127B
service
MusicService.java 5KB
ServiceManager.java 7KB
demo
MusicPlayActivity.java 27KB
MusicTimer.java 1KB
MenuItemData.java 917B
widget
ImageAdapter.java 4KB
MySlidingDrawer.java 3KB
GalleryFlow.java 4KB
.project 845B
.classpath 280B
AndroidManifest.xml 945B
共 97 条
- 1
资源评论
weixin_39841848
- 粉丝: 509
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 安享智慧理财测试项目-使用数据库构造测试数据的代码
- 基于html实现蛋糕店网站页面源码.zip
- 疫情数据查看(sping boot)
- c++0101生日快乐
- 1碳交易机制下考虑需求响应的优化运行(20).zip
- 基于C/C++开发的单目控制机械臂的上位机程序+视觉识别和关节角反解+源码(高分优秀项目)
- 学生课设,C++数据结构实验,队列的实现,vs2022完整项目,包含完整代码,开箱即用
- max111111111
- 基于streamlit实现的企业物流分析平台功能物流数据可视化物流费用测算求解商品最优补货路径源码.zip
- 基于matlab仿真的puma560机械臂RRT路径规划算法+源码(高分优秀项目)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功