文档章节

练习4

 易水寒521
发布于 2015/06/17 15:31
字数 793
阅读 6
收藏 0
点赞 0
评论 0
 package com.anhui.music_player.view;
import java.util.List;
import java.util.Random;
import com.anhui.music_player.R;
import com.anhui.music_player.model.Music;
import com.anhui.music_player.util.MusicList;
import com.anhui.music_player.util.ToTime;
import com.anhui.music_player.view.setting.about;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
public class play extends Activity {
 List<Music> list;
 TextView music_name, etime, stime,lrc;
 MediaPlayer mp = null;
 SeekBar sb;
 ToTime time=new ToTime();
 ImageView music_model, music_lasted, music_play, music_next, music_list;
 int pattern = 1;
 int c;
 Handler handler = new Handler();
 
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  setContentView(R.layout.play);
  music_name = (TextView) findViewById(R.id.music_name);
  etime = (TextView) findViewById(R.id.music_end_time);
  stime = (TextView) findViewById(R.id.music_start_time);
  sb = (SeekBar) findViewById(R.id.music_seekBar);
  music_model = (ImageView) findViewById(R.id.music_model);
  music_lasted = (ImageView) findViewById(R.id.music_lasted);
  music_play = (ImageView) findViewById(R.id.music_play);
  music_next = (ImageView) findViewById(R.id.music_next);
  music_list = (ImageView) findViewById(R.id.music_list);
  list = MusicList.getMusicData(this);
  mp = new MediaPlayer();
  Intent intent = getIntent();
  c = intent.getIntExtra("musicId_1", 1);
  musicplay(c);
  // 播放模式
  music_model.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View arg0) {
    if (pattern == 4) {
     pattern = 0;
    }
    pattern++;
    if (pattern == 1) {
     music_model.setBackgroundResource(R.drawable.sequence);
    } else if (pattern == 2) {
     music_model.setBackgroundResource(R.drawable.single);
    } else if (pattern == 3) {
     music_model.setBackgroundResource(R.drawable.model);
    } else if (pattern == 4) {
     music_model.setBackgroundResource(R.drawable.circle);
    }
   }
  });
  // 上一首
  music_lasted.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    c = jian(c);
    if (mp.isPlaying()) {
     mp.stop();
     mp.reset();
    }
    musicplay(c);
   }
  });
  // 下一首
  music_next.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    c = jia(c);
    if (mp.isPlaying()) {
     mp.stop();
     mp.reset();
    }
    musicplay(c);
   }
  });
  // 播放/暂停
  music_play.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    if (mp.isPlaying()) {
     mp.pause();
     music_play.setBackgroundResource(R.drawable.play_button);
    } else if (!mp.isPlaying()) {
     mp.start();
     music_play.setBackgroundResource(R.drawable.pause_button);
    }
   }
  });
  sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
   @Override
   public void onProgressChanged(SeekBar seekBar, int progress,
     boolean fromUser) {
   }
   @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    // TODO Auto-generated method stub
   }
   @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    mp.seekTo(seekBar.getProgress());
   }
  });
  mp.setOnCompletionListener(new OnCompletionListener() {
   @Override
   public void onCompletion(MediaPlayer arg0) {
    if (pattern == 1) {
     if (c < list.size()) {
      c++;
      musicplay(c);
     }
    } else if (pattern == 2) {
     musicplay(c);
    } else if (pattern == 3) {
     Random r = new Random();
     musicplay(r.nextInt(list.size()));
    } else if (pattern == 4) {
     c++;
     if (c <= list.size()) {
      musicplay(c);
     } else {
      c = 0;
      musicplay(c);
     }
    }
   }
  });
  new Thread(updateThread).start();
 }
 Runnable updateThread = new Runnable() {
  public void run() {
   stime.setText(time.toTime(mp.getCurrentPosition()));
   // 获得歌曲现在播放位置并设置成播放进度条的值
   sb.setProgress(mp.getCurrentPosition());
   // 每次延迟100毫秒再启动线程
   handler.postDelayed(updateThread, 100);
  }
 };
 public void musicplay(int c) {
  Music m = list.get(c);
  mp = MediaPlayer.create(play.this, Uri.parse(m.getUrl()));
  String name = m.getName();
  music_name.setText(name.substring(0, name.length() - 4).split("-")[0]);
  etime.setText(time.toTime((int)m.getTime()));
  sb.setMax(mp.getDuration());
  mp.start();
 }
 public int jia(int c) {
  if (pattern == 1) {
   if (c < list.size()) {
    c++;
   }
  } else if (pattern == 2) {
   c++;
   if (c <= list.size()) {
   } else {
    c = 0;
   }
  } else if (pattern == 3) {
   Random r = new Random();
   c = r.nextInt(list.size());
  } else if (pattern == 4) {
   c++;
   if (c <= list.size()) {
   } else {
    c = 0;
   }
  }
  return c;
 }
 public int jian(int c) {
  if (pattern == 1) {
   if (c > 0) {
    c--;
   }
  } else if (pattern == 2) {
   c--;
   if (c >= 0) {
   } else {
    c = list.size();
   }
  } else if (pattern == 3) {
   Random r = new Random();
   c = r.nextInt(list.size());
  } else if (pattern == 4) {
   c--;
   if (c >= 0) {
   } else {
    c = list.size();
   }
  }
  return c;
 }
 // 菜单选项
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // menu.add(0,1,0,"退出"); //添加选项
  // menu.add(0,2,0,"关于"); //添加选项
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }
 @SuppressLint("ShowToast")
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
  if (item.getItemId() == R.id.exit) {
   Intent intent = new Intent("com.sleep.close");
   sendBroadcast(intent);
   dialog();
  }
  if (item.getItemId() == R.id.about) {
   Intent intent1 = new Intent(play.this, about.class);
   startActivity(intent1);
  }
  return super.onOptionsItemSelected(item);
 }
 protected void dialog() {
  AlertDialog.Builder builder = new Builder(play.this);
  builder.setMessage("确定要退出吗?");
  builder.setTitle("提示");
  builder.setPositiveButton("确认",
    new android.content.DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
      dialog.dismiss();
      // AccoutList.this.finish();
      // System.exit(1);
      android.os.Process.killProcess(android.os.Process
        .myPid());
     }
    });
  builder.setNegativeButton("取消",
    new android.content.DialogInterface.OnClickListener() {
     @Override
     public void onClick(DialogInterface dialog, int which) {
      dialog.dismiss();
     }
    });
  builder.create().show();
 }
}
package com.anhui.music_player.util;
import java.util.ArrayList;
import java.util.List;
import com.anhui.music_player.model.Music;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.provider.MediaStore;

public class MusicList {
 public static List<Music> getMusicData(Context context) {
  List<Music> musicList = new ArrayList<Music>();
  ContentResolver cr = context.getContentResolver();
  if (cr != null) {
   // 获取所有歌曲
   Cursor cursor = cr.query(
     MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null,
     null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER);
   if (null == cursor) {
    return null;
   }
   if (cursor.moveToFirst()) {
    do {
     Music m = new Music();
     String title = cursor.getString(cursor
       .getColumnIndex(MediaStore.Audio.Media.TITLE));
     String singer = cursor.getString(cursor
       .getColumnIndex(MediaStore.Audio.Media.ARTIST));
     if ("<unknown>".equals(singer)) {
      singer = "未知艺术家";
     }
     String album = cursor.getString(cursor
       .getColumnIndex(MediaStore.Audio.Media.ALBUM));
     long size = cursor.getLong(cursor
       .getColumnIndex(MediaStore.Audio.Media.SIZE));
     long time = cursor.getLong(cursor
       .getColumnIndex(MediaStore.Audio.Media.DURATION));
     String url = cursor.getString(cursor
       .getColumnIndex(MediaStore.Audio.Media.DATA));
     String name = cursor
       .getString(cursor
         .getColumnIndex(MediaStore.Audio.Media.DISPLAY_NAME));
     String sbr = name.substring(name.length() - 3,
       name.length());
     if (sbr.equals("mp3")) {
      m.setTitle(title);
      m.setSinger(singer);
      m.setAlbum(album);
      m.setSize(size);
      m.setTime(time);
      m.setUrl(url);
      m.setName(name);
      musicList.add(m);
     }
    } while (cursor.moveToNext());
   }
   if (cursor != null) {
    cursor.close();
   }
  }
  return musicList;
 }
}

© 著作权归作者所有

共有 人打赏支持
粉丝 0
博文 129
码字总数 120077
作品 0
虹口
开发中遇到的拼凑json的问题,求大神帮忙解决下。

json1={ "styleID": "2", "Type": "ATEST", "StyleName": "单选题", "CptItems": [ { "srcID": 1, "srcName": "强化练习", "sbjID": 2, "sbjName": "强化练习", "TestCount": 17 }, { "srcI......

漂流的河 ⋅ 2016/12/19 ⋅ 7

SQLServer2012子查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,返回Orders表中可以查到的活动最后一天的所有订单 涉及的表:Sales.Orders 输出的列:orderid, orderdat...

杰克鹏仔 ⋅ 2016/11/10 ⋅ 0

SQLServer2012表表达式练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1-1 练习内容:返回每个雇员在orderdate列中的最大值 涉及的表:Sales.Orders 输出的列:empid, maxorderdate 正确结果:9行 练习1...

杰克鹏仔 ⋅ 2016/11/17 ⋅ 0

SQLServer2012子查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,返回Orders表中可以查到的活动最后一天的所有订单 涉及的表:Sales.Orders 输出的列:orderid, orderdat...

巧乐兹 ⋅ 2016/11/05 ⋅ 0

python—函数实例

1.函数的定义 练习:判断输入的是不是一个数字 #!/usr/bin/env pythondef isNum():sth = raw_input("Please input something: ")try:if type(int(sth)) == type(1):print "%s is a number" ......

huangzp168 ⋅ 2017/12/01 ⋅ 0

SQLServer2012联接查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,为每个雇员生成5个副本 涉及的表:HR.Employees, dbo.Nums 输出的列:empid, firstname, lastname, n 正...

杰克鹏仔 ⋅ 2016/11/10 ⋅ 0

SQLServer2012联接查询练习

表结构与数据:https://github.com/XuePeng87/TSQLV4 练习1 练习内容:编写一个查询,为每个雇员生成5个副本 涉及的表:HR.Employees, dbo.Nums 输出的列:empid, firstname, lastname, n 正...

巧乐兹 ⋅ 2016/10/28 ⋅ 0

我从《刻意练习》一书中学到的东西

看了两个月的刻意练习,终于有点心得,可以将知识变成指导行动的方法了,趁着还热乎,赶紧记下来! 练习,有目的的练习,刻意练习 不知道你有没有这种经历,有些人明明看起来很努力,却一直没...

闪电的蓝熊猫 ⋅ 05/27 ⋅ 0

find 命令基础练习

练习1 查找/tmp下,不是目录,并且还不能是套接字类型的文件find /tmp -not -type d -a -not -type s -ls练习2 /tmp/test 目录下,属主即不是user1 ,也不是user2的文件find /tmp/test -not (...

bruceweng ⋅ 2017/12/06 ⋅ 0

工作3年,这样做你就能成为专家

什么是刻意练习 所谓具有某些超强技能的天才,不过是刻意练习的结果罢了。 按照刻意练习的框架:练习—反馈—改进练习—反馈—…。其核心就是,从舒适区走出来,走进学习区,并通过持续的反馈...

anda0109 ⋅ 2016/12/11 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Qt中的坑--QTreeWidget添加item 不能显示出来

QTreeWidget* pTree = ui.TreeCheckList; QTreeWidgetItem* item = new QTreeWidgetItem(pTree) ;item->setText ( 0, "test" );pTree->addTopLevelItem (item ); 原因是因为创建一个......

k91191 ⋅ 31分钟前 ⋅ 0

使用Guava的RateLimiter做限流

场景: 1. 在日常生活中,我们肯定收到过不少不少这样的短信,“京东最新优惠卷…”,“天猫送您…”。这种类型的短信是属于推广性质的短信。这种短信一般群发量会到千万级别。然而,要完成这...

wind2012 ⋅ 31分钟前 ⋅ 0

QSlider重新enterEvent

#ifndef DIALOG_H#define DIALOG_H#include <QDialog>namespace Ui {class Dialog;}class Dialog : public QDialog{ Q_OBJECTpublic: explicit Dialog(QW......

xxdd ⋅ 31分钟前 ⋅ 0

生产环境redis备份与恢复

生产环境redis备份与恢复 Tyrant0532 0人评论 1563人阅读 2018-02-01 20:34:10 redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。生产中我们主...

rootliu ⋅ 33分钟前 ⋅ 0

nginx中出现403forbidden错误

nginx “403 Forbidden” 错误 出现这个错误一般是因为以下原因: 网站禁止特定的用户访问所有内容,例:网站屏蔽某个ip访问。 访问禁止目录浏览的目录,例:设置autoindex off后访问目录。 ...

河图再现 ⋅ 34分钟前 ⋅ 0

上海云栖:金融政企行业的CDN最佳实践

摘要: 在刚刚结束的上海云栖大会飞天技术汇分论坛上,阿里云视频云产品架构师罗小飞进行了《阿里云CDN——面向金融政企的CDN最佳实践》主题分享,为上海的嘉宾介绍CDN的解决方案与技术服务体...

猫耳m ⋅ 39分钟前 ⋅ 0

docker 基本操作

docker介绍 Docker项目提供了构建在Linux内核功能之上,协同在一起的的高级工具。其目标是帮助开发和运维人员更容易地跨系统跨主机交付应用程序和他们的依赖。Docker通过Docker容器,一个安全...

haoyuehong ⋅ 40分钟前 ⋅ 0

上海云栖:金融政企行业的CDN最佳实践

摘要: 在刚刚结束的上海云栖大会飞天技术汇分论坛上,阿里云视频云产品架构师罗小飞进行了《阿里云CDN——面向金融政企的CDN最佳实践》主题分享,为上海的嘉宾介绍CDN的解决方案与技术服务体...

阿里云云栖社区 ⋅ 43分钟前 ⋅ 0

安装与配置hadoop

一、CentOS7安装 java8,参考centos7.0 安装java1.8,tomcat 二、安装hadoop 版本V3.03 1、下载并解压hadoop # mkdir /usr/local/app# mkdir /usr/local/app/hadoop# cd /usr/local/app/had......

iturtle ⋅ 44分钟前 ⋅ 0

Idea设置Serializable自动生成

File --> Settings --> Editor --> Inspections ->Serialization issues,在该项下找到“Serializable class without 'serialVersionUID' ”并勾选...

Gmupload ⋅ 47分钟前 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部