|
|
本帖最后由 焱妃 于 2023-7-5 09:03 编辑
自己无聊写的音乐播放器
默认整个列表循环,勾选单曲循环则一直单曲循环,没有做暂停功能,不想听直接关闭软件就行,可以拖动进度条调节
播放不会被打断,放视频时也不会被打断,接电话也是,屏幕熄灭后依然能播放。
注意:被播放的歌曲只能在安装包内的assets文件夹内(完全独立),里面有个--song.txt--文件,在里面配置歌曲信息。想听哪个自己用MT添加到安装包内部就行,下面的是测试包,里面仅有一首歌“one last time”
APK网址
源代码,仅有一个Activity,AIDE写的,无任何加密,随意二改。
- package com.kangplayer;
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Spinner;
- import android.widget.ArrayAdapter;
- import android.view.Menu;
- import android.view.MenuItem;
- import android.widget.Toast;
- import android.view.Gravity;
- import android.widget.AdapterView.OnItemSelectedListener;
- import android.widget.AdapterView;
- import android.widget.Adapter;
- import android.view.View;
- import android.media.MediaPlayer;
- import java.io.IOException;
- import android.widget.TextView;
- import android.widget.SeekBar;
- import android.os.Handler;
- import android.os.Message;
- import android.widget.SeekBar.OnSeekBarChangeListener;
- import android.view.Window;
- import android.view.WindowManager;
- import android.widget.CheckBox;
- import android.view.View.*;
- import android.view.*;
- import android.app.*;
- import android.widget.*;
- import android.text.*;
- import java.util.*;
- import android.widget.AdapterView.*;
- import org.apache.http.client.utils.*;
- import java.io.*;
- public class MainActivity extends Activity {
- String song[]={"此生不换伴奏","Something just like this伴奏","The Way I Still Love You"};
- String songname[]={"a.mp3","b.mp3","c.mp3"};
- String songlist[];
- String songtxt="",songtxt1="";
- Spinner sp;
- TextView text;
- SeekBar seek;
- CheckBox ch;
- MediaPlayer mediaplayer,player1;
- boolean istuodong=false,isonwindow=true;
- String shichang="";
- int currsongposi=0;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
- initsong();
- init();
- start();
- }
- public void initsong(){
- try{
- InputStream in=getAssets().open("song.txt");
- byte by[]=new byte[in.available()];
- int len=0;
- while((len=in.read(by))!=-1){
- songtxt=new String(by,"UTF-8");
- }
- }catch(Exception e){}
- song=songtxt.replace("\n","").split(">>");
- for(int i=0;i<song.length;i++){
- song[i]=song[i].substring(0,song[i].indexOf(">"));
- }
- songname=songtxt.replace("\n","").split(">>");
- for(int i=0;i<song.length;i++){
- songname[i]=songname[i].substring(songname[i].indexOf(">")+1);
- }
- }
- public void init() {
- sp = findViewById(R.id.activitymainSpinner1);
- text = findViewById(R.id.activity_mainTextView);
- ch = findViewById(R.id.activitymainCheckBox1);
- seek = findViewById(R.id.activitymainSeekBar1);
- sp.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, song));
- sp.setOnItemSelectedListener(new OnItemSelectedListener(){
- @Override
- public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- currsongposi = position;
- if (isonwindow) {
- if (mediaplayer == null) {
- mediaplayer = new MediaPlayer();
- try {
- mediaplayer.setDataSource(getAssets().openFd(songname[currsongposi]));
- mediaplayer.prepare();
- } catch (Exception e) {}
- mediaplayer.start();
- } else {
- mediaplayer.reset();
- try {
- mediaplayer.setDataSource(getAssets().openFd(songname[currsongposi]));
- mediaplayer.prepare();
- } catch (Exception e) {}
- mediaplayer.start();
- }
- seek.setMax(mediaplayer.getDuration() / 1000);
- }
- }
- @Override
- public void onNothingSelected(AdapterView<?> parent) {
- }
- });
- sp.setOnTouchListener(new OnTouchListener(){
- @Override
- public boolean onTouch(View p1, MotionEvent p2)
- {
- isonwindow=true;
- // TODO: Implement this method
- return false;
- }
- });
- seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- }
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
- }
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
- if (mediaplayer.isPlaying()) {
- mediaplayer.seekTo(seekBar.getProgress() * 1000);
- }
- }
- });
- }
- Handler hand=new Handler(){
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- seek.setMax(mediaplayer.getDuration() / 1000);
- int fen=mediaplayer.getCurrentPosition() / 1000 / 60;
- int miao=mediaplayer.getCurrentPosition() / 1000 - fen * 60;
- int fen1=mediaplayer.getDuration() / 1000 / 60;
- int miao1=mediaplayer.getDuration() / 1000 - fen1 * 60;
- String miao2="",miao3="";
- if (miao < 10) {
- miao2 = "0" + miao;
- if (miao1 < 10) {
- miao3 = "0" + miao1;
- } else {
- miao3 = String.valueOf(miao1);
- }
- } else {
- if (miao1 < 10) {
- miao3 = "0" + miao1;
- } else {
- miao3 = String.valueOf(miao1);
- }
- miao2 = String.valueOf(miao);
- }
- shichang = fen + ":" + miao2 + "/" + fen1 + ":" + miao3;
- text.setText(shichang);
- seek.setProgress(mediaplayer.getCurrentPosition() / 1000);
- if (msg.what == 1) {
- sp.setSelection(currsongposi);
- }
- }
- };
- public void start() {
- new Thread(new Runnable(){
- public void run() {
- while (true) {
- try {
- Thread.sleep(500);
- Message msg=new Message();
- msg.what = 0;
- hand.sendMessage(msg);
- if (mediaplayer.getCurrentPosition() > mediaplayer.getDuration() - 1000 && ch.isChecked()) {
- mediaplayer.reset();
- try {
- mediaplayer.setDataSource(getAssets().openFd(songname[currsongposi]));
- mediaplayer.prepare();
- } catch (Exception e) {}
- mediaplayer.start();
- }
- if (mediaplayer.getCurrentPosition() > mediaplayer.getDuration() - 1000 && !ch.isChecked()) {
- currsongposi++;
- if (currsongposi == song.length) {
- currsongposi = 0;
- }
- Message msg1=new Message();
- msg1.what = 1;
- hand.sendMessage(msg1);
- mediaplayer.reset();
- try {
- mediaplayer.setDataSource(getAssets().openFd(songname[currsongposi]));
- mediaplayer.prepare();
- } catch (Exception e) {}
- mediaplayer.start();
- }
- } catch (InterruptedException e) {}
- }
- }
- }).start();
- }
-
- @Override
- protected void onStop() {
- super.onStop();
- isonwindow = false;
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- menu.add("关于软件");
- menu.add("定位歌曲");
- return super.onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getTitle().toString()) {
- case "关于软件":
- Toast toast = Toast.makeText(this, "康康打造", Toast.LENGTH_LONG);
- toast.setGravity(Gravity.TOP, 0, 0);
- toast.show();
- break;
- case "定位歌曲":
- AlertDialog.Builder b = new AlertDialog.Builder(this);
- b.setTitle("定位歌曲");
- View view = getLayoutInflater().inflate(R.layout.songlist,null);
- b.setView(view);
- b.show();
- final EditText e = view.findViewById(R.id.songlistEditText1);
- final ListView list = view.findViewById(R.id.songlistListView1);
- list.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,song));
- list.setOnItemClickListener(new OnItemClickListener(){
- @Override
- public void onItemClick(AdapterView<?> p1, View p2, int p3, long p4)
- {
- isonwindow=true;
- for(int i=0;i<song.length;i++){
- if(song[i]==song[p3]){
- currsongposi=i;
- }
- }
- sp.setSelection(currsongposi);
-
- }
- });
- e.addTextChangedListener(new TextWatcher(){
- @Override
- public void beforeTextChanged(CharSequence p1, int p2, int p3, int p4)
- {
- // TODO: Implement this method
- }
- @Override
- public void onTextChanged(CharSequence p1, int p2, int p3, int p4)
- {
- // TODO: Implement this method
- }
- @Override
- public void afterTextChanged(Editable p1)
- {
- String allsong="";
- for(int i = 0;i<song.length;i++){
- if(song[i].contains(e.getText().toString())){
- allsong=allsong+song[i]+"]";
- }
- }
- //Toast.makeText(MainActivity.this,allsong,Toast.LENGTH_LONG).show();
-
- songlist=allsong.split("]");
- list.setAdapter(new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_list_item_1,songlist));
- list.setOnItemClickListener(new OnItemClickListener(){
- @Override
- public void onItemClick(AdapterView<?> p1, View p2, int p3, long p4)
- {
- Toast.makeText(MainActivity.this,songlist[p3],Toast.LENGTH_LONG).show();
- isonwindow=true;
- for(int i=0;i<song.length;i++){
- if(song[i].contains(songlist[p3])){
- currsongposi=i;
- }
- }
- sp.setSelection(currsongposi);
- // TODO: Implement this method
- }
- });
- }
- });
- break;
- default:
- break;
- }
- return true;
- }
- }
复制代码
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|