导航:首页 > 编程语言 > android权威编程源码

android权威编程源码

发布时间:2024-05-20 05:31:09

❶ 有没有适合 android 开发初学者的 App 源码推荐

GitHub上google和googlesample这两个帐号下有若干Android app,大部分都是遵循google推荐的最佳实践,并且符合Material Design,很值得学习。手机码字,晚上回去给好连接

首先介绍 iosched这个项目,google/iosched · GitHub 。
iosched项目是Google I/O的官方app,不仅仅是一个学习的demo,这是一个真正开源的线上项目。
这个项目里面使用了大量Google官方推荐的最佳实践,比如使用loader加载数据,大量使用本地sqlite缓存数据,通过syncAdapter来更新本地缓存的数据,配合GMS达到节约流量省电的目的。另外这个app也是学些MaterialDesign的不错的范例。另外这个app还很好的适配了手机和pad,如果你想要做这方面的适配工作,不妨也参考一下
至于项目的committer,你可以找到比如romannurik这种Google Android项目开发者,证实这并不是Google的实习生写的项目,而是Android平台的核心工程师所做,质量自然很有保证。
第二个推荐的就是topeka项目 googlesamples/android-topeka · GitHub 。
这个项目是Google前几天刚发出来,用来展示如何将MaterialDesign应用到你的app中,以达到最佳设计和交互效果。通过这个app,你还可以学到如何设计你app的交互和视觉以更好的和MaterialDesign搭配。

❷ 现在到哪获取android系统源代码

Android系统源码都在http://android.git.kernel.org/网址下,其中那个系统app都在platform/packages/apps结构下。
在刚才的Git的shell命名行窗口中输入下面的命名:
git clone git://android.git.kernel.org/platform/packages/apps/Luancher2.git
你就可以在你的msysGit安装目录的git下(~\msysgit\msysgit\git)看到Luancher工程文件夹了。

然后打开~\msysgit\msysgit\git\Luancher2文件夹,就可以看到Android的Luancher系统源码工程了。

对于其他的app系统源码的获取方法和上述的Luancher相同,只是命名行后的参数不同。
git clone git://android.git.kernel.org/需下载源码的app所在的位置。

❸ 濡备綍浣跨敤Android Studio寮鍙/璋冭瘯Android婧愮爜

android studio瀹夎呭悗闇瑕佸湪eclipse涓瀵煎嚭浠g爜锛屽苟瀵煎叆鍒皊tudio涓镓嶈兘浣跨敤銆侲clipse杩佺Щ鍒痨ndroid studio姝ラゅ备笅锛
涓銆佷粠Eclipse涓瀵煎嚭锛
1銆佸皢浣犵殑ADT鎻掍欢鐗堟湰鍗囩骇鍒22.0浠ヤ笂銆
2銆佸湪Eclipse涓锛岄夋嫨File-->Export銆
3銆佸湪寮瑰嚭镄勫煎嚭绐楀彛涓锛屾墦寮Android镄勬枃浠跺す锛岄夋嫨钬淕enerate Gradle Build Files钬濄
4銆侀変腑浣犳兂瑕佸煎叆鍒痨ndroid Studio涓镄勯”鐩锛孎inish銆

娉ㄦ剰锛氩煎嚭镄勯”鐩灏嗕细鍜屽师𨱒ョ殑椤圭洰鍦ㄥ悓涓鐩褰曪纴瑕嗙洊铡熸潵镄勫悓镞讹纴浼氭柊澧炰竴涓鍙玝uild.gradle镄勬枃浠讹纴瀵煎叆Android Studio镞跺皢棣栧厛璇诲彇杩欎釜鏂囦欢銆

浜屻佸煎叆鍒痨ndroid Studio锛
1銆佸湪Android Studio 涓锛岄栧厛鍏虫帀浣犲綋鍓岖殑镓揿紑镄勯”鐩銆
2銆佸湪娆㈣繋鐣岄溃锛岀偣鍑筹mport Project锛堟敞锛氢篃鏄鍙浠ョ洿鎺ュ湪凿滃崟阃夋嫨Import project镄勶级銆
3銆侀変腑Eclipse涓瀵煎嚭镄勯”鐩锛屽𪾢寮鐩褰曪纴镣瑰嚮build.gradle鏂囦欢锛岀劧钖嶰K銆
4銆佸湪涔嫔悗镄勫脊鍑哄硅瘽妗嗕腑锛屼细瑕佹眰浣犻夋嫨Gradle镄勯厤缃锛岄変腑Use gradle wrapper.(娉锛氢篃鍙浠ヨ嚜瀹氢箟浣犳湰链鸿呯殑Gradle)銆

娉ㄦ剰锛氩傛灉娌℃湁Grade build鏂囦欢锛屼篃鏄鍙浠ュ皢鏅阃氱殑瀹夊崜椤圭洰瀵煎叆鍒痨ndroid Studio涓锛屽畠浼氱敤鐜版湁镄𪞝nt build.浣嗕负浜嗘洿濂藉湴浣跨敤涔嫔悗镄勫姛鑳藉拰鍏呭垎浣跨敤鏋勫缓鍙橀噺锛岃缮鏄寮虹儓鍦板缓璁鍏堜粠ADT鎻掍欢涓鐢熸垚Gradle鏂囦欢鍐嶅煎叆Android Studio銆

❹ 基于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 List<String> myMusicList=new ArrayList<String>();
//当前播放歌曲的索引
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(--currentListItem<0)
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 List<String> myMusicList=new ArrayList<String>();
//当前播放歌曲的索引
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());
}
ArrayAdapter<String> musicList=new ArrayAdapter<String>
(Activity01.this,android.R.layout.simple_list_item_1, myMusicList);
m_ListView.setAdapter(musicList);
}
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

❺ 如何使用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,这样可以确保使用源码里的库文件

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

六、其它

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

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

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

❻ Android源码追踪—android:onClick

之前对源码的阅读,总是用时一通乱七八糟的跳转,以学会使用为目的;过了一段时间,就忘记了,因此打算将一些源码的阅读经历记录下来,也通过敲一遍的过程,加深理解。

最开始,用一个比较简单的例子来小试牛刀吧

对于View(Button、TextView等)的点击事件,常用的写法是通过 findViewById 获取View的实例,然后通过 setOnClickListener 设置监听事件,比如我们有如下Button控件。

设置点击事件(假设在Activity中)

但是还有一种写法是在xml布局中通过android:onClick属性直接指定点击执行的函数。

【思考】

首先我们知道诸如 android:xxx 之类的属性是会在某个attrs文件中定义的,此处的 android:onClick 是View的属性,定义在如下文件中。

在View的构造函数中,会解析出此属性的值。

看这里, 如果变量handlerName不为空,就会为此View设置点击事件了 ,这个handlerName就是onClick属性的值doSubmit,但这个点击事件,并不是我们所熟悉的OnClickListener。

进一步看看这个 DeclaredOnClickListener 类

DeclaredOnClickListener 实现了 OnClickListener ,其中重点是参数 mResolvedMethod 和 mResolvedContext 。

在onClick事件中最终通过反射 mResolvedMethod.invoke(mResolvedContext, v); 执行了doSubmit方法。

doSubmit的访问权限是否可以设置为private呢?

答案:不可以,因为源码中没有调用 mMethod.setAccessible(true); 注入所有修饰符。

其实在onClick属性的注释中就已经说明了。

❼ 如何获取android源代码

当前的Android代码托管在两个方:https://github.com/android 和https://android.googlesource.com之前在 android.git.kernel.org上也有托管,不过现在重定向到了https://android.googlesource.com好在都支持git访问。

google提供的repo工具实际上是一个内部操作git工具来简化操作Android源码的Python脚本。经过尝试,直接使用git工具在ubuntu下可以实现cloneAndroid源码。下面介绍一下方法:

1.获取当前的在github上托管的Androidgitrepositories:

github页面为:https://github.com/android/following。不过这个页面不支持通过wget"https://github.com/android/following"或者curl"https://github.com/android/following"的方式访问,错误信息如下:

这个时候需能做的只能是"tryagain"了。

需要说明的是"不要试图同时并发执行多个gitclone命令",这样会导致大量出现上面贴图中的错误,另外,整个clone过程中耗时最多的gitrepository如下:

kernel_common.gitkernel_msm.gitplatform_frameworks_base.gitplatform_prebuilt.git其中platform_prebuilt.git是google提供的预编译好的二进制文件,包含:各种库文件,jar包,可执行程序等等,如果只是阅读Android源代码,这个gitrepository可以不用clone.

❽ 怎么运用Git来获取android源代码

下载Git工具:(默认安装即可,我自己是安装在D:\AndroidSrc\Git目录下):

安装完成之后,双击桌面的Git bash图标:

双击出现如下命令窗口,并输入cd /c/
android/source(因为我是选择把android源代码下载到这里面具体情况你可以根据自己的需要来决定),出现如下界面:

初始化目录,使用命令:git init ,然后从远程服务器下载git:

git fetch http://android.git.kernel.org/ + project path.git

并且输入我要下在的base这个部分的代码:git fitch
http://android.git.kernel.org/platformworks/base.git

出现如下界面:

出现这个肯定下载不了的,为什么呢?我去android官网去看了一下,原来不是用老版本的那个命令了,而是如下的命令:

因此我要下载的base这个源代码,找到相应的目录,看下图中的最后一个目录:我用命令:

于是我用:git clone
https://android.googlesource.com/platform/frameworks/base.git
命令来下载base部分的源代码,具体的界面如下:

然而居然出现HTTP
服务请求失败,所以自己果把https换成http(我想大多数的朋友在eclipse中在线安装ADT插件的时候,也会碰到类似的问题,这里就不一一详述了):

输入命令:git clone
http://android.googlesource.com/platform/frameworks/base.git
出现如下界面:

结果成功下载了base这个部分的代码:现在看看我的C盘相应目录中多出的base这个文件夹:

结果就成功了,你要下载其他部分的源代码,依葫芦画瓢就OK了,希望能帮到学习android的朋友。

❾ 镐庢牱镆ョ湅 Android APP婧愪唬镰

瑕佹煡鐪婣ndroid APP镄勬簮浠g爜锛屼綘鍙浠ラ氲繃浠ヤ笅鍑犵嶆柟娉曪细

1. 浠庡紑婧愬钩鍙拌幏鍙栵细濡傛灉APP鏄寮婧愮殑锛屼綘鍙浠ュ湪濡侴itHub銆丢itLab绛変唬镰佹墭绠″钩鍙颁笂鎼灭储璇APP镄勬簮浠g爜銆

2. 浣跨敤鍙岖紪璇戝伐鍏凤细瀵逛簬闱炲紑婧愮殑APP锛屼綘鍙浠ュ皾璇曚娇鐢ㄥ弽缂栬疟宸ュ叿濡侫pktool鍜孞D-GUI𨱒ュ弽缂栬疟APK鏂囦欢銆傝繖浜涘伐鍏峰彲浠ュ皢APK鏂囦欢杞鎹涓哄彲璇荤殑婧愪唬镰佸舰寮忥纴浣呜锋敞镒忥纴鍙岖紪璇戝缑鍒扮殑浠g爜鍙鑳戒笉瀹屽叏绛夊悓浜庡师濮嬫簮浠g爜锛屼笖鍙鑳藉寘钖缂栬疟鍜屼紭鍖栧悗镄勪唬镰併

3. 鍒╃敤璋冭瘯宸ュ叿锛氩傛灉浣犳嫢链堿PP镄𪞝PK鏂囦欢锛屽苟涓斿笇链涘湪杩愯屾椂镆ョ湅婧愪唬镰侊纴浣犲彲浠ヤ娇鐢ˋndroid Studio镄勮皟璇曞姛鑳姐傞氲繃璋冭瘯锛屼綘鍙浠ュ湪APP杩愯屾椂镆ョ湅鍜屼慨鏀逛唬镰侊纴浣呜繖闇瑕佷竴瀹氱殑缂栫▼鐭ヨ瘑鍜岀粡楠屻

4. 镵旂郴寮鍙戣咃细濡傛灉浣犲规煇涓狝PP镄勬簮浠g爜镒熷叴瓒o纴浣嗘棤娉曢氲繃浠ヤ笂鏂规硶銮峰彇锛屼綘鍙浠ュ皾璇曡仈绯诲紑鍙戣呮垨寮鍙戝洟阒燂纴璇㈤梾浠栦滑鏄钖︽効镒忓垎浜婧愪唬镰併傛湁浜涘紑鍙戣呭彲鑳戒细镒挎剰鍒嗕韩浠栦滑镄勪唬镰侊纴鐗瑰埆鏄瀵逛簬闾d簺鏁栾偛鎴栫爷绌剁洰镄勭殑璇锋眰銆

鍦ㄦ煡鐪婣ndroid APP婧愪唬镰佹椂锛岃风‘淇濅綘阆靛畧鐩稿叧镄勬硶寰嫔拰阆揿痉瑙勮寖銆傛湭缁忚稿彲镄勮幏鍙栧拰浣跨敤浠栦汉镄勬簮浠g爜鍙鑳戒镜鐘鐭ヨ瘑浜ф潈锛屽洜姝よ风‘淇濅綘镄勮屼负钖堟硶钖堣勚傚悓镞讹纴浜呜В婧愪唬镰佸苟涓嶆剰锻崇潃浣犲彲浠ラ殢镒忎慨鏀瑰拰鍒嗗彂APP锛岄櫎闱炰綘銮峰缑浜嗗紑鍙戣呯殑鏄庣‘鎺堟潈銆

镐讳箣锛屾煡鐪婣ndroid APP婧愪唬镰佺殑鏂规硶锲燗PP镄勫紑婧愭儏鍐佃屽纾銆傚逛簬寮婧怉PP锛屼綘鍙浠ョ洿鎺ヤ粠浠g爜镓樼″钩鍙拌幏鍙栨簮浠g爜锛涘逛簬闱炲紑婧怉PP锛屼綘鍙浠ュ皾璇曚娇鐢ㄥ弽缂栬疟宸ュ叿鎴栬皟璇曞伐鍏锋潵镆ョ湅婧愪唬镰侊绂褰撶劧锛屼綘涔熷彲浠ヨ仈绯诲紑鍙戣呭绘眰甯锷┿傛棤璁洪噰鐢ㄥ摢绉嶆柟娉曪纴閮借风‘淇濅綘镄勮屼负钖堟硶钖堣勶纴骞跺皧閲崭粬浜虹殑鐭ヨ瘑浜ф潈銆

阅读全文

与android权威编程源码相关的资料

热点内容
主力吸筹派发区域指标源码 浏览:695
单片机pc的低字节怎么算 浏览:230
pythoneval函数源码 浏览:242
linuxmongodb服务启动 浏览:766
在哪里下载核酸检测app 浏览:310
esxi启动虚拟机命令 浏览:969
军工级单片机 浏览:113
服务器安全保护是什么意思 浏览:789
删除运行命令 浏览:720
龙之召唤服务器如何 浏览:119
linux目录跳转 浏览:368
程序员和老板称兄道弟 浏览:759
直播网络连接源码 浏览:736
用安卓手机怎么登录苹果手机id 浏览:710
论文查重工具源码 浏览:401
android银联demo 浏览:86
智能算法发展 浏览:351
房车露营地用什么app 浏览:70
spark编程指南python 浏览:553
phparray源码 浏览:1002