当前位置:首页 > 网站源码 > 正文内容

Androidstudio音乐播放器源码(Android开发音乐播放器)

网站源码1年前 (2023-01-17)784

今天给各位分享Androidstudio音乐播放器源码的知识,其中也会对Android开发音乐播放器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

android studio app 自动更新 源码

第一步,打开android studio,打开自己的项目系统源码,如图所示,点击Build菜单,然后选择GenerateSigned APK。

请点击输入图片描述

第二步,如图所示,创建密钥库及密钥,如果已经有秘钥库,那就用已有的。

请点击输入图片描述

第三步,如图所示,尽量保证这里红色箭头所指的两处密码相同,因为这样可以避免混淆,然后点击确认按钮。如图红色框中的填存储key的文件名。

请点击输入图片描述

第四步,choose keystone file ,如图所示,选择文件。

请点击输入图片描述

第五步,如图所示,完成操作后,点击next。

请点击输入图片描述

第六步,如图所示,接下来在这里需要点击图中标记的两个选项,然后点击Finish按钮,最终的APK文件就在此图所设置的路径中。

请点击输入图片描述

如何使用android studio 查看android源码

1、在Android studio的中进行导入一个Android的开发的项目的文件,然后在项目中选中一个需要检查的文件。2、项目的文件被选中完成之后,进行点击Android studio菜单中的Analyze选项菜单。3、进行点击完Analyze菜单中之后,就会弹出了一个下拉的菜单的inspect code选项菜单。4、然后就会弹出了一个speoify inspection scope的谈出框,在inspection scope中,whole project为是整个的项目检查,如果只想检查刚才选中的文件,进行选中第四个选项即可file【app】即可,然后进行点击OK。5、那么在就会Android studio的底部位置中,弹出了一个项目的检查的结果,也是检查结果的列表。6、如果要查看具体的检查的内容的话,进行点击检查的结果的文件之后,可以查看到的是检查结果的具体信息内容。

如何使用Android Studio开发/调试Android源码

本文是以源码中development/tools/idegen/README作为指导文档.

环境: Ubuntu 14.10,openJdk 1.7,Android Studio 1.0.2,android-5.0.1_r1源码

由于AS是基于IntelliJ IDEA开发的,所以本文也适用于IntelliJ IDEA

一、修改Android Studio(以下简称AS)的内存配置

因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/bin/studio.vmoptions中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改。

二、配置AS的JDK、SDK

在IDE中添加一个没有classpath的JDK, 这样可以确保使用源码里的库文件

三、生成导入AS所需配置文件(*.ipr)

①编译源码(为了确保生成了.java文件,如R.java;如果编译过,则无需再次编译)

②检查out/host/linux-x86/framework/目录下是否有idegen.jar

如果idegen.jar不存在,执行:

mmm development/tools/idegen/

在5.0.1的源码中会生成res.java的文件夹,导致idegen.jar运行时抛FileNotFoundException,这是idegen的代码不够严谨造成的。

我的分享里有修改这个bug的patch,或者直接使用我分享的idegen.jar。

③执行

development/tools/idegen/idegen.sh

等待出现类似下面的结果:

Read excludes: 5ms

Traversed tree: 44078ms

这时会在源码的根目录下生成android.ipr和android.iml两个IntelliJ IDEA(AS是基于IntelliJ

IDEA社区版开发的)的配置文件

④在AS中打开源码根目录下新生成的android.ipr

如果在导入时AS出现

则建议按照其给定的解决方法来解决

四、解决源码中跳转错误问题

①为当前工程设置正确的SDK和JDK

②设置'Modules'的依赖

先将所有依赖删掉,只留下上图'1'所指向的两个(注意:这里删除全部只是为了方便。如果确实用到了.jar,在将它们的路径添加进来就可以了.

如:5.0.1的ContactsCommon用到了geocoder-2.9.jar和libphonenumber-6.2.jar)

点击上图中'2'指向的'+'并选择上图'3'指向的'Jars or

directories'选项,依次将frameworks和external文件夹添加进来.如:

其它版本的代码在添加frameworks时可能会显示成:

没有关系,只是显示问题,点击OK还是会把frameworks路径添加进去的.

如果还有代码跳转错误,请仿照上面的步骤将相应代码的路径或jar文件添加到其Dependencies标签页中即可.

五、DEBUG源码

我们可以通过给刚导入的工程在'Modules'中添加'Android

Framework'来让AS将它作为一个Android工程,从而方便我们调试代码.

可以按照上图中'1'和'2'来添加Android Framework支持.

在代码中加断点,然后选择'Run'-'Attach debugger to Android process'或者直接点击下图所示的图标

在弹出的选择进程(Choose Process)对话框中,勾选显示所有进程,选择要DEBUG的代码所在的进程,点击OK即可.

六、其它

代码中很多地方提示Call requires API Level x.... 出现这个问题是因为AS将我们的工程当做安卓应用程序工程了,且源码中没有指定minSdkVersion.

我们只需在源码根目录加一个声明minSdkVersion的AndroidManifest.xml文件即可(分享了一个AndroidManifest.xml)。

也可以考虑使用build.gradle来解决该问题。

基于Android音乐播放器源代码(正常播放、有列表)

package my.android.players;

import java.io.File;

import java.io.FilenameFilter;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.app.AlertDialog;

import android.content.DialogInterface;

import android.content.Intent;

import android.media.MediaPlayer;

import android.os.Bundle;

import android.view.KeyEvent;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageButton;

import android.widget.TextView;

public class mainActivity extends Activity {

private ListString myMusicList=new ArrayListString();

//当前播放歌曲的索引

private int currentListItem=0;

//音乐的路径

private static final String MUSIC_PATH="/sdcard/mp3";

//播放对象

private MediaPlayer myMediaPlayer;

private TextView m_TextView;

//播放按钮

private ImageButton m_start;

private ImageButton m_stop;

private ImageButton m_next;

private ImageButton m_last;

/*设定bIsPaused一开始为false */

private boolean bIsRun = false;

private boolean isplay;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.main2);

myMediaPlayer=new MediaPlayer();

musicList();

m_TextView=(TextView)findViewById(R.id.mtextview);

m_start=(ImageButton)findViewById(R.id.imgbtn_start);

m_stop=(ImageButton)findViewById(R.id.imgbtn_stop);

m_next=(ImageButton)findViewById(R.id.imgbtn_next);

m_last=(ImageButton)findViewById(R.id.imgbtn_last);

listener();

Intent intent = this.getIntent();

Bundle bundle = intent.getExtras();

currentListItem = bundle.getInt("currentListItem");

isplay=bundle.getBoolean("isplay");

if(isplay==true)

{

bIsRun=false;

playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));

}

}

//监听事件

void listener(){

//开始

m_start.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

try

{

if(myMediaPlayer.isPlaying()==true)

{

myMediaPlayer.pause();

m_start.setImageResource(R.drawable.pause);

}

else

{

playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));

}

}

catch (IllegalStateException e)

{

// TODO Auto-generated catch block

e.printStackTrace();

}

}

});

//下一首

m_next.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

nextMusic();

}

});

//上一首

m_last.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

lastMusic();

}

});

//停止

m_stop.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

stopMusic();

}

});

myMediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

// TODO Auto-generated method stub

nextMusic();

}

});

}

//播放音乐

void playMusic(String path){

try {

if(bIsRun==false)

{

myMediaPlayer.reset();

myMediaPlayer.setDataSource(path);

myMediaPlayer.prepare();

myMediaPlayer.start();

/*

* 取出歌曲名的.mp3后缀

* */

String str=(myMusicList.get(currentListItem)).toString();

System.out.println(str);

String str1[]=str.split("\\.");

System.out.println(str1[0]);

m_TextView.setText(str1[0]);

}

else

{

myMediaPlayer.start();

}

m_start.setImageResource(R.drawable.start);

bIsRun=true;

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

//下一首

void nextMusic(){

if(++currentListItem=myMusicList.size()){

currentListItem=0;

}

bIsRun=false;

playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));

}

//上一首

void lastMusic(){

if(--currentListItem0)

currentListItem=myMusicList.size()-1;

bIsRun=false;

playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));

}

//停止

void stopMusic() {

if (myMediaPlayer.isPlaying()) {

m_start.setImageResource(R.drawable.pause);

myMediaPlayer.stop();// 停止

bIsRun=false;

}

else

playMusic(MUSIC_PATH+"/"+myMusicList.get(currentListItem));

}

//当用户返回时结束音乐并释放音乐对象

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

if(keyCode==KeyEvent.KEYCODE_BACK){

new AlertDialog.Builder(mainActivity.this).setTitle("message")

.setIcon(android.R.drawable.dialog_frame)

.setMessage("你确定要离开吗?")

.setPositiveButton("确定",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

myMediaPlayer.stop();

myMediaPlayer.release();

finish();

}

}).setNegativeButton("取消",new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

}

}).show();

}

return super.onKeyDown(keyCode, event);

}

/**

* 文件过滤器

*

* @author

*

*/

class MusicFilter implements FilenameFilter {

@Override

public boolean accept(File dir, String filename) {

return (filename.endsWith(".mp3"));

}

}

//绑定音乐

void musicList(){

try{

File home=new File(MUSIC_PATH);

if(!home.exists())

home.mkdirs();

if(home.listFiles(new MusicFilter()).length=0){

for(File file:home.listFiles(new MusicFilter())){

myMusicList.add(file.getName().toString());

}

}

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

}

package my.android.players;

import java.io.File;

import java.io.FilenameFilter;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ArrayAdapter;

import android.widget.ListView;

public class Activity01 extends Activity {

//播放列表

private ListString myMusicList=new ArrayListString();

//当前播放歌曲的索引

private int currentListItem;

//音乐的路径

private static final String MUSIC_PATH="/sdcard/mp3";

//播放列表

private ListView m_ListView;

private boolean isplay=true;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

m_ListView=(ListView)findViewById(R.id.lv_music);

musicList();

//当选择列表项时播放音乐

m_ListView.setOnItemClickListener(new ListView.OnItemClickListener() {

@Override

public void onItemClick(AdapterView? arg0, View arg1, int arg2,

long arg3) {

currentListItem = arg2;

Intent intent = new Intent();

Bundle mBundle=new Bundle();

mBundle.putInt("currentListItem", currentListItem);

mBundle.putBoolean("isplay", isplay);

intent.putExtras(mBundle);

intent.setClass(Activity01.this,mainActivity.class);

startActivity(intent);

finish();

}

});

}

/**

* 文件过滤器

*

* @author

*

*/

class MusicFilter implements FilenameFilter {

@Override

public boolean accept(File dir, String filename) {

return (filename.endsWith(".mp3"));

}

}

//绑定音乐

void musicList(){

try{

File home=new File(MUSIC_PATH);

if(!home.exists())

home.mkdirs();

if(home.listFiles(new MusicFilter()).length=0){

for(File file:home.listFiles(new MusicFilter())){

myMusicList.add(file.getName().toString());

}

ArrayAdapterString musicList=new ArrayAdapterString

(Activity01.this,android.R.layout.simple_list_item_1, myMusicList);

m_ListView.setAdapter(musicList);

}

}

catch(Exception ex)

{

ex.printStackTrace();

}

}

}

如何用androifstudio制作一个android音乐播放器

音乐播放器其实最核心的就是音乐的播放、暂停、快进快退、歌曲切换。如果需要后台播放就要用到Service。

先考虑功能,音乐是程序去扫描还是程序自动搜索,自动搜索就涉及到文件的遍历,文件读取到以后就涉及到如何获取mp3的信息(歌曲名、歌手、专辑等等,也可通过谷歌自带的媒体库读取,不过依耐性就太强了),还有就是界面了,你要做成什么样的(比如播放界面就在此界面还是跳转一个界面播放等等)

android studio 急求一个as开发大神帮忙。本地音乐播放器还差歌词同步功能,

eclipse发,

android视频音乐播放器demo,

eclipse跟android

studio发工具已,代码原理都

Androidstudio音乐播放器源码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Android开发音乐播放器、Androidstudio音乐播放器源码的信息别忘了在本站进行查找喔。

扫描二维码推送至手机访问。

版权声明:本文由我的模板布,如需转载请注明出处。


本文链接:http://sdjcht.com/post/1183.html

分享给朋友:

“Androidstudio音乐播放器源码(Android开发音乐播放器)” 的相关文章

修改apk数据目录(怎么修改apk里的数据)

修改apk数据目录(怎么修改apk里的数据)

本篇文章给大家谈谈修改apk数据目录,以及怎么修改apk里的数据对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、如何修改APk数据 2、如何修改apk文件? 3、如...

用手机剪辑视频的软件哪个最好用(剪辑视频哪个手机软件比较好用)

用手机剪辑视频的软件哪个最好用(剪辑视频哪个手机软件比较好用)

本篇文章给大家谈谈用手机剪辑视频的软件哪个最好用,以及剪辑视频哪个手机软件比较好用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、手机上什么小视频剪辑软件好用。 2、手...

电视台直播软件app免费下载(电视台直播软件下载电视版)

电视台直播软件app免费下载(电视台直播软件下载电视版)

本篇文章给大家谈谈电视台直播软件app免费下载,以及电视台直播软件下载电视版对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、地方台电视直播app怎么下载 2、电视直播a...

心电图pp间距与pp间期区别(心电图中pp间期是什么)

心电图pp间距与pp间期区别(心电图中pp间期是什么)

今天给各位分享心电图pp间距与pp间期区别的知识,其中也会对心电图中pp间期是什么进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、心电图P-P间期等0.28-...

苹果手机自带浏览器怎么看下载记录(苹果手机怎么查看浏览器下载记录吗)

苹果手机自带浏览器怎么看下载记录(苹果手机怎么查看浏览器下载记录吗)

本篇文章给大家谈谈苹果手机自带浏览器怎么看下载记录,以及苹果手机怎么查看浏览器下载记录吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、怎么查看苹果手机所有下载的东西...

天龙八部怀旧服账号交易平台5173(天龙八部怀旧服账号交易平台神仙)

天龙八部怀旧服账号交易平台5173(天龙八部怀旧服账号交易平台神仙)

今天给各位分享天龙八部怀旧服账号交易平台5173的知识,其中也会对天龙八部怀旧服账号交易平台神仙进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、天龙八部怀旧服...