搜档网
当前位置:搜档网 › android手把手教你开发launcher

android手把手教你开发launcher

android手把手教你开发launcher
android手把手教你开发launcher

launcher,也就是android的桌面应用程序。下图是android2.3的launcher应用程序:

接下来我们要开发一个自己的launcher,使其替代系统的默认launcher。

怎样使我们的应用程序成为一个launcher?

下面我们就新建一个叫做MyHome的工程,具体步骤略。创建完工程后整个目录结构如下图:

现在我们的AndroidManifest.xml文件这样的:

package="org.bangchui.myhome"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

请注意

里面的内容。

下面我们在其中添加上以下两行:

?

1 2

此时AndroidManifest.xml文件是这样:?

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

package="org.bangchui.myhome"

android:versionCode="1"

android:versionName="1.0">

android:label="@string/app_name">

17

18

19

20

此时运行程序,我们看不到任何特别之处。当按下home键时(模拟器上按下home会调出桌面应用),程序如图:

我们看到了,我们开发的Myhome跟Launcher出现在了一起。

重启模拟器,我们看到我们自己的程序已经可以作为home来运行了。

ok。第一步完成了:把我们的应用程序作为home。

总结一下:要把我们的应用程序作为home,只需要在AndroidManifest.xml中添加:

android手把手教你开发launcher (二)

第二课:列出安装的应用程序

预备知识:GridView的使用\ 改写BaseAdapter

列出已经安装的应用程序是作为launcher比不可少的功能。下面我们就讲解怎样将应用程序列出来。程序运行后的样子如下:

一. 修改main.xml,在其中添加一个GridView用来显示应用程序列表。

修改后如下:

?

1 2 3 4 5 6 7

android:layout_height="fill_parent">

android:id="@+id/apps_list"

8 9

10

11

12 android:numColumns="4"

android:layout_height="wrap_content">

二. 通过PackageManager的api 查询已经安装的apk

我们写一个叫做loadApps的方法将活得的应用程序列表放到private List mApps; 中,如下:

?

1 2 3 4 5 6 private void loadApps() {

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

mApps = getPackageManager().queryIntentActivities(mainIntent, 0); }

三. 实现用于显示Gridview的Adapter,使其显示获得的应用程序列表

直接上代码:

?

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19 public class AppsAdapter extends BaseAdapter {

public AppsAdapter() {

}

public View getView(int position, View convertView, ViewGroup parent) { ImageView i;

if (convertView == null) {

i = new ImageView(MyHome.this);

i.setScaleType(ImageView.ScaleType.FIT_CENTER);

i.setLayoutParams(new https://www.sodocs.net/doc/66634458.html,youtParams(50, 50));

} else {

i = (ImageView) convertView;

}

ResolveInfo info = mApps.get(position);

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42 i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));

return i;

}

public final int getCount() {

return mApps.size();

}

public final Object getItem(int position) {

return mApps.get(position);

}

public final long getItemId(int position) {

return position;

}

}

最后整个Activity的代码如下?

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17 package org.bangchui.myhome; import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.content.pm.ResolveInfo; import android.os.Bundle;

import android.view.View;

import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView;

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61 public class MyHome extends Activity {

GridView mGrid;

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

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

loadApps();

setContentView(https://www.sodocs.net/doc/66634458.html,yout.main);

mGrid = (GridView) findViewById(R.id.apps_list);

mGrid.setAdapter(new AppsAdapter());

}

private List mApps;

private void loadApps() {

Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

mApps = getPackageManager().queryIntentActivities(mainIntent, 0);

}

public class AppsAdapter extends BaseAdapter {

public AppsAdapter() {

}

public View getView(int position, View convertView, ViewGroup parent) { ImageView i;

if (convertView == null) {

i = new ImageView(MyHome.this);

i.setScaleType(ImageView.ScaleType.FIT_CENTER);

i.setLayoutParams(new https://www.sodocs.net/doc/66634458.html,youtParams(50, 50));

} else {

i = (ImageView) convertView;

}

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87 ResolveInfo info = mApps.get(position);

i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));

return i;

}

public final int getCount() {

return mApps.size();

}

public final Object getItem(int position) {

return mApps.get(position);

}

public final long getItemId(int position) {

return position;

}

}

}

第三课启动安装的应用程序

1. 监听GridView的onItemClick事件

设置一个监听器是为了当gridView的某项被点击时,会有一个回调函数通知我们。

我们调用mGrid.setOnItemClickListener(listener); 设置一个监听器

mGrid.setOnItemClickListener(listener)中的listener是一个接口,其类型为:android.widget.AdapterView.OnItemClickListener,如下图所示:

下面我们new一个android.widget.AdapterView.OnItemClickListener类型的对象作为参数。我

们直接使用eclipde的自动补全功能来完成OnItemClickListener 的定义:?

1 2 3 4 5 private OnItemClickListener listener = new OnItemClickListener() {

@Override

public void onItemClick(AdapterView parent, View view, int position,long id) { }

};

接口OnItemClickListener 中有一个方法叫做onItemClick,我们实现它即可。下面我对onItemClick的几个参数略作说明:

parent 略

view 被点击的view

position 被点击项的位置

id 被点击项的id

2.启动被点击应用的activity

一般来讲,我们根据position即可知道被点击的项目是哪一项了。现在我们根据被点击的项目,取出对应的应用程序数据(主要是其中的主activity),然后启动activity。用下面代码实现:

?

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15 @Override

public void onItemClick(AdapterView parent, View view, int position,long id) { ResolveInfo info = mApps.get(position);

//该应用的包名

String pkg = info.activityInfo.packageName;

//应用的主activity类

String cls = https://www.sodocs.net/doc/66634458.html,;

ComponentName componet = new ComponentName(pkg, cls);

Intent i = new Intent();

i.setComponent(componet);

startActivity(i);

}

例如,我们点击计算器时,启动了计算器,如下图:

现在整个类代码如下:

复制代码

1.package org.bangchui.myhome;

2.

3.import java.util.List;

4.

5.import android.app.Activity;

6.import https://www.sodocs.net/doc/66634458.html,ponentName;

7.import android.content.Intent;

8.import android.content.pm.ResolveInfo;

9.import android.os.Bundle;

10.import android.view.View;

11.import android.view.ViewGroup;

12.import android.widget.AdapterView;

13.import android.widget.BaseAdapter;

14.import android.widget.GridView;

15.import android.widget.ImageView;

16.import android.widget.AdapterView.OnItemClickListener;

17.

18.public class MyHome extends Activity {

19. private List mApps;

20. GridView mGrid;

21. private OnItemClickListener listener = new OnItemClickListener() {

22. @Override

23. public void onItemClick(AdapterView parent, View view, int position,long id) {

24. ResolveInfo info = mApps.get(position);

25.

26. //该应用的包名

27. String pkg = info.activityInfo.packageName;

28. //应用的主activity类

29. String cls = https://www.sodocs.net/doc/66634458.html,;

30.

31. ComponentName componet = new ComponentName(pkg, cls);

32.

33. Intent i = new Intent();

34. i.setComponent(componet);

35. startActivity(i);

36. }

37.

38. };

39.

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

41. @Override

42. public void onCreate(Bundle savedInstanceState) {

43. super.onCreate(savedInstanceState);

44.

45. loadApps();

46. setContentView(https://www.sodocs.net/doc/66634458.html,yout.main);

47. mGrid = (GridView) findViewById(R.id.apps_list);

48. mGrid.setAdapter(new AppsAdapter());

49.

50. mGrid.setOnItemClickListener(listener);

51. }

52.

53.

54. private void loadApps() {

55. Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);

56. mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

57.

58. mApps = getPackageManager().queryIntentActivities(mainIntent, 0);

59. }

60.

61. public class AppsAdapter extends BaseAdapter {

62. public AppsAdapter() {

63. }

64.

65. public View getView(int position, View convertView, ViewGroup parent) {

66. ImageView i;

67.

68. if (convertView == null) {

69. i = new ImageView(MyHome.this);

70. i.setScaleType(ImageView.ScaleType.FIT_CENTER);

71. i.setLayoutParams(new https://www.sodocs.net/doc/66634458.html,youtParams(50, 50));

72. } else {

73. i = (ImageView) convertView;

74. }

75.

76. ResolveInfo info = mApps.get(position);

77. i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));

78.

79. return i;

80. }

81.

82. public final int getCount() {

83. return mApps.size();

84. }

85.

86. public final Object getItem(int position) {

87. return mApps.get(position);

88. }

89.

90. public final long getItemId(int position) {

91. return position;

92. }

93. }

94.}

我们在前面的课程中已经列出了安装的应用程序,并且点击后可以启动应用程序了! 下面我们来研究如何显示widget 。

源代码: 附件出售:TestWidget.7z

我们要达到这样的效果:点击“add widget” 后弹出widget 列表,之后选择一个widget 后显示在界面上,如下:

第四课:显示widget

1. 获取widget 信息

获取widget 其实非常简单,我们只需要发送一个请求到系统,系统就会打开widget 的列表,然后我们选择一个即可。代码如下: ?

1 2 3 4 5 6 7 void addWidget() {

int appWidgetId = mAppWidgetHost.allocateAppWidgetId();

Intent pickIntent = new Intent(AppWidgetManager.ACTION_APPWIDGET_PICK); pickIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

// start the pick activity

startActivityForResult(pickIntent, [b]REQUEST_PICK_APPWIDGET[/b]);

}

2. 添加widget的view到layout中

当选择一个widget后会通过onActivityResult 通知到activity,widget的信息被包含在Intent data中,详情看代码注释

?

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38 @Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

// The pattern used here is that a user PICKs a specific application,

// which, depending on the target, might need to CREATE the actual

// target.

// For example, the user would PICK_SHORTCUT for "Music playlist", and

// we

// launch over to the Music app to actually CREATE_SHORTCUT.

if (resultCode == RESULT_OK) {

switch (requestCode) {

case REQUEST_PICK_APPWIDGET:

addAppWidget(data);

break;

case REQUEST_CREATE_APPWIDGET:

completeAddAppWidget(data);

break;

}

}

}

void addAppWidget(Intent data) {

// TODO: catch bad widget exception when sent

int appWidgetId = data.getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);

AppWidgetProviderInfo appWidget = mAppWidgetManager

.getAppWidgetInfo(appWidgetId);

//widget 包含设置信息不为空,则启动widget的设置界面

if (appWidget.configure != null) {

// Launch over to configure widget, if needed

Intent intent = new Intent(

AppWidgetManager.ACTION_APPWIDGET_CONFIGURE);

intent.setComponent(appWidget.configure);

intent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82 startActivityForResultSafely(intent, REQUEST_CREATE_APPWIDGET);

} else {

// widget 包含设置信息为空,直接添加widget到layout中

// Otherwise just add it

onActivityResult(REQUEST_CREATE_APPWIDGET, Activity.RESULT_OK, data); }

}

void startActivityForResultSafely(Intent intent, int requestCode) {

try {

startActivityForResult(intent, requestCode);

} catch (ActivityNotFoundException e) {

Toast.makeText(this, "activity_not_found", Toast.LENGTH_SHORT)

.show();

} catch (SecurityException e) {

Toast.makeText(this, "activity_not_found", Toast.LENGTH_SHORT)

.show();

}

}

/**

* 添加widget信息到layout中

* @param data 包含了widget的信息

*/

private void completeAddAppWidget(Intent data) {

Bundle extras = data.getExtras();

int appWidgetId = extras

.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, -1);

Log.d(TAG, "dumping extras content=" + extras.toString());

AppWidgetProviderInfo appWidgetInfo = mAppWidgetManager

.getAppWidgetInfo(appWidgetId);

// Perform actual inflation because we're live

synchronized (mLock) {

//获取显示widget的view

mHostView = mAppWidgetHost.createView(this, appWidgetId,

appWidgetInfo);

mHostView.setAppWidget(appWidgetId, appWidgetInfo);

//将获取的view添加早layout中

LayoutParams lp = new https://www.sodocs.net/doc/66634458.html,youtParams(

83

84

85

86

87

88

89 appWidgetInfo.minWidth, appWidgetInfo.minHeight); mainLayout.addView(mHostView, lp);

mHostView.requestLayout();

}

}

显示壁纸也是launcher必不可少的功能,下面我们看看如何让我们开发的launcher来显示壁纸。

新建一个叫做ShowWallpaper的工程,具体步骤略。

一. 显示壁纸

要在我们的activity里显示一个壁纸非常简单(包括动态壁纸也如此),我们只需要定义一个theme使其继承自android:Theme.Wallpaper,然后在activity中使用这个theme就ok了。在res/valuse下面增加一个xml文件,其名称为styles.xml ,内容如下:

?

1 2 3 4 5 6

此时整个工程的结果如下:

下面在AndroidManifest.xml中使用这个theme,如下图所示:

xml代码如下?

1 2 3 4 5 6 7 8 9

10

11

12

13

14

15

16

17

18

package="com.test"

android:versionCode="1"

android:versionName="1.0">

android:theme="@style/Theme"

android:label="@string/app_name">

好了,运行程序,可以看到壁纸的显示效果了:(显示的是预设置的动态壁纸:星系)

设置壁纸

用代码设置壁纸也是非常地简单的事,我们只需要向系统发送一个“设置请求”就足够了,其它的事情系统处理。

用下面代码表示:

?

1 2 3 4 5 6 7 public void onSetWallpaper(View view) {

//生成一个设置壁纸的请求

final Intent pickWallpaper = new Intent(Intent.ACTION_SET_WALLPAPER);

Intent chooser = Intent.createChooser(pickWallpaper,"chooser_wallpaper"); //发送设置壁纸的请求

startActivity(chooser);

}

为了调用上面这段代码,我们在xml中添加一个button,并设置回调函数,如下图:

最后运行代码,步骤如下图所示:

设置壁纸后:

《蒹葭》教学实录(名师教你如何上好公开课)

《蒹葭》教学实录(名师教你如何上好公开课) (课前播放水边芦苇画面配《在水一方》二胡曲。) 师:有这样几句诗,大家可能听过:“关关雎鸠,在河之洲。窈窕淑女,君子好逑。”你们知道这些诗句出自哪一本书吗? 生(齐):《诗经》。 师:没错,出自《诗经》。中国是一个诗的国度,中国古典诗歌灿若星河,佳篇如林。今天我们要学的《蒹葭》也出自《诗经》。这是一部怎样的书呢? 生1:是我国的第一部诗歌总集。 师:对这本诗集我们还有哪些了解? (屏显《诗经》简介。) 师:今天我们要学的《蒹葭》出自《诗经·秦风》。这说明它来自于哪里? 生(齐):民间。 师:对,来自于民间。也就是说它是一首民歌,是最有生活气息和生命力的。下面,我们就来听读一遍这首诗歌。听读的时候注意节奏、读音、感情,还要注意它结构上的规律,并看看我国古代的民歌都有些什么特点。 (师配《在水一方》二胡曲诵读,学生聆听。) 师:老师发现你在听读的时候摇头晃脑,非常陶醉。对这首诗你一定很有感觉吧,说说你的感受。 生1:我觉得这首诗开头所写的景物很美。 师:噢,景物之美。其他同学还有什么发现吗?可以从诗的结构或是韵律方面谈谈。

生2:这首诗有三个小节,每个小节都押韵。 师:押的什么韵?举个例子。 生2:“蒹葭苍苍,白露为霜。所谓伊人,在水一方”押“ang”韵。 师:还有其他的韵吗? 生3:还有“i”。 师:能把韵脚找出来吗? 生3:“苍”“霜”“方”“央”押的是“ang”韵;“凄”“晞”“跻”“涘”“已”押的是“i”韵。 师:你真是一个细心的孩子,所有的韵脚都被你找出来了。它是押韵的,景也很美,还有吗?你还发现了什么? 生4:结构很整齐。每个段八句,前两句写景,后六句写人和事。 师:你也有一双善于发现的眼睛。结构很整齐,它一共有多少章?如果是现代诗,我们就会说它有多少节,古代就称为章。也就说,这三章诗的结构是非常一致的,而且又押韵。所以,读起来会给我们什么感觉? 生(众):琅琅上口。 师:这就体现了《诗经》民歌的特色了。现在,请大家美美地自由朗读这首诗。(屏显。) 四言句式;“二二”拍;押韵;运用叠词;重章叠韵。 (生自由诵读。) 师:下面,老师要请一位能代表咱们班朗读水平的男同学朗读一遍,看看能否读出韵味。老师为什么要找男同学来朗读呢? 生1:因为这首诗是男的写给女的。 (生推荐语文科代表朗读。)

浅谈Android(安卓)

浅谈Android--嵌入式操作系统 Android(读音:[??ndr?id],中文俗称安卓)是一个以Linux为基础的半开源操作系统,主要用于移动设备,由Google成立的Open Handset Alliance (OHA,开放手持设备联盟)持续领导与开发中。 --题记.维基百科说起嵌入式系统,曾经在保罗大叔的著作《黑客与画家》里看到多次,然后不明所以,就去查了嵌入式系统。如果说嵌入式系统给我的第一印象是硬件,那么是我还不知道嵌入式在我生活里已经出现了很多年了。 大到冰箱,自动存款机(ATM),小到电子手表,遥控器。在维基百科解答后,我对嵌入式直观的理解,是一种特定的植入硬件并极具针对性的计算机系统。 后来慢慢了解嵌入式的软件方面,就知道了嵌入式操作系统,而其中的佼佼者,就是如今已经超越ios,占据半壁江山的Android。 之所以会说Android,原因有二:一,因为Android如今炙手可热,在新一季度的日本手机软件营销额上,以Java等语言为Android系统开发的Apps,疯狂揽金,李开复断言在两年内,中国内地手机游戏软件市场,将会百花齐放;二,我虽并非研究Java也非致力于Android系统,但是Android系统的内核,却是我所熟悉的Linux内核。而我将自己的开发平台转移到Linux系统,并以Python,Perl以及Lisp语言作为未来的生存工具,所以,就让我们谈一谈Android。 题记中套用维基百科对于Android的介绍,主要的目的,就是为了澄清一件事实“认知”——Android并没有真正的中文名。 Google并没有为Android命名,只有为其版本取名,且翻译成中文:4.2.x Jelly Bean 果冻豆,4.0.x Ice Cream Sandwich 冰激凌三明治,3.x.x Honey

名师教学实录 (5)

名师教学实录 1数一数 1 引入新课 师:同学们,今天我们一起来学习怎样数图上的物品和人物。下面,哪位同学能从1数到10呢? (有几个同学都很流利地数出来) 师:全班一起数一数吧。(全班齐数)非常流利,不错。 2 教授新知 (出示主题图) 师:我们看到图中有一面国旗,那么可以用什么数字来表示呢? (出示:1) 生:老师,还有一位老师。 师:对!不管是一位老师还是一面国旗,只要是数量只有“一”的,我们就可以用数字“1”来表示。请同学们再观察图,还有哪些物品的数量是“1”? 生:一个足球。 师:请你上来指一指。 (指后全班都说:“对!”) 生:一栋教学楼。 师:对吗?图上是不是只画了一栋教学楼呢?大家看看。(全班都说:“是!”)那我们学校是不是只有一栋教学楼呢?生:不是。 (一个学生边说边用手指着几栋教学楼的方位) 师:你观察得很仔细,我们学校有好几栋教学楼。 生:国旗上有一颗大星星。 师:哦,你看得真仔细!我们看一下国旗,上面是不是有一颗大的星星? (同学们都仔细地看着,然后说:“是!”) 师:同学们都观察得很仔细,上课时也很积极,有不一样的意见时能大胆说出来,这一点非常好。 生1:老师,还有一个足球场。 生2:有一个操场。 (教师把学生们说出来的东西一一写在黑板上) 师:今天,老师发现同学们特别细心,昨天我们只是数了一面红旗和一位老师,这么多的东西都没有数出来,现在你们能说这么多,太了不起了! (出示挂图,全班一齐从1数到10) 师:请大家再看一看,还有哪些物品是我们没数到的?同桌互相说一说。 (学生交流) 师:下面我们来数一数我们身上都有些什么器官,比如:我有1张嘴,2只手。同学们能不能用“我有几个什么”来说一说呢? 生1:我有2只脚。 生2:我有1个鼻子。 生3:我有2只手。 生4:我的这只手有5根手指。

Android视频上传与播放的设计与实现

毕业设计 题目:基于Android的校园信息移动平台的 设计

摘要 随着智能手机的快速普及,智能手机操作系统市场风生水起。为了让智能手机能够随时随地地查询互联网所提供的服务,一种高效的方法就是将应用系统的功能拓展到手机终端上,让手机能够通过移动网络以及互联网访问相关资源信息。因此,智能手机应用软件及其需要的服务将有广阔的发展前景。 本课题为其设计一个基于Android在线学习系统,为用户提供一个可以用于在线播放视频、视频评论和收藏的APP应用,丰富用户娱乐生活,提高生活情趣。 本论文首先介绍系统的开发背景和意义,接着详细介绍系统设计以及实现的过程,最后介绍了系统测试和本软件的测试用例以及总结了本次毕业设计整个过程。 关键词:Android 、智能系统、在线课堂、手机软件

ABSTRACT With the rapid proliferation of smart phones, smart phone operating system market burgeoned. In order to make smart phones can check the Internet anytime, anywhere service provided, an efficient method is to expand the application system functions to the mobile terminal, allowing the phone to access information via the mobile network resources and the Internet. Therefore, smart phone applications and services they need to have broad prospects for development. Based on this study to design an Android video player that can be used to provide users with an online video, video reviews and collections of APP applications, rich user entertainment life, improve zest for life. This paper introduces the background and significance of the development of the system, followed by detailed system design and implementation process, and finally introduced the system testing and test this software and summarizes the whole process of this graduation project. Keywords: Android, intelligent systems, player, mobile phone software

安卓(Android)系统的50个秘密

身边现在越来越多人使用上了安卓系统的手机,但是有些操作和使用还是让很多刚接触的菜鸟用户感到复杂和困惑。我整理出Android系统的50大必备秘籍供用户参考,适合各种阶段的Android用户。希望可以帮助更多用户更深入的了解和使用好Android系统。 请注意这些技巧和秘籍大部分针对目前最主流的Android 2.1系统,不过绝大部分在其他版本的Android系统上同样适用。 1.使用Android电源管理widget 从Android 2.1系统开始内置了一个非常强大的带能源管理widget,通过这个widget你可以快速开启或者关闭Wi-Fi,蓝牙,GPS,同步这些手机耗电大户,还可以方便的设定手机屏幕亮度,长按手机屏幕,就可以在widgets目录选择启用。 2.Android手机拨号屏幕 For personal use only in study and research; not for commercial use 如果你对手机拨号屏幕功能性有特殊要求,Android绝对会满足你,点击联系人列表里任意一个用户,按手机menu >选项,里面有关于单个联系人的详细设置。 3.为每个联系人定制铃声 可以为女朋友或者家人设置单独的铃声,这样听到铃声就知道谁来电话了。设置方法点击联系人列表里任意一个用户,然后就可以设置铃声。 For personal use only in study and research; not for commercial use 4.不要把手机闹钟(alarm clock)加入进程查杀列表里 这是一个经典的错误,很多用户都喜欢用进程管理程序自动杀掉一些程序以节省电量或者腾出手机内存,不过如果不小心alarm clock进程也杀掉了,后果就是第二天早晨10:30才醒过来惊慌失措的奔向公司。 5.用文件夹组织内容 虽然乔布斯花了很久才决定放开iOS用户通过文件夹组织内容的权限,事实上Android从面世开始就支持这个功能,Android文件夹不但支持放入程序图标,还可以存放通讯录,甚至facebook联系人等信息,长按手机屏幕就可以在桌面建立文件夹。 6.重命名文件夹 建立了文件夹后你可能需要修改它的名称,只需要打开文件夹,长按顶部的名称就可以调出重命名文件夹的窗口。 7.查看系统日期 Android新用户可能觉得查看系统日期有点麻烦,其实只要按住屏幕顶部左上方的提醒栏,就会显示今天的日期,赶快试试吧。

Android界面设计教程

这样的话就比较容易实现了,再看一下整体的Layout布局情况: xml布局文件如下:注意层次的嵌套。先是一个RelativeLayout,它有两个子布局,RelativeLayout和LinearLayout。

android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:padding="10.0dip" android:singleLine="true" android:text="设置" android:textColor="@color/white" android:textSize="15dp" />

基于Android的视频通话系统的设计与实现毕业设计论文

东北大学毕业设计(论文)摘要基于Android的视频通话系统的设计与实现 摘要 近年来,智能手机操作系统发展迅速,尤其是Android系统的迅猛发展已经将全球智能手机市场引领到了非常火爆的状态。随着手机社交网络、手机多媒体通信和手机游戏等应用程序不断被开发出来,各种基于智能手机操作系统的应用程序正在逐渐影响和改变人们的生活方式。实时视频流技术在可视电话、远程教育、视频点播等方面得到了广泛的应用。 本文设计并实现的基于Android的视频通话系统采用C/S架构,包括PC和手机两个客户端。手机端使用Android2.3操作系统。本系统共包含四个子系统:PC端接收子系统、发送子系统,Android端接收子系统、发送子系统。接收子系统实现数据接收、转码和呈现,发送子系统现实数据采集、编码压缩和数据发送。PC端基于JMF框架来实现,Android端使用Android Camera类及其相关类来实现。本文对国内外视频通话的研究情况以及今后的发展前景,对实现视频通话所涉及到的协议和相关技术进行了分析,在此基础上提出了一种可行的网络视频通话设计方案,并通过需求分析、详细设计、编码实现、单元测试以及集成测试等过程完成了本系统的设计与实现。 本系统实现了跨平台视频通话,使PC与Android之间的视频通话成为了可能,可以起到丰富人们日常生活交流和娱乐方式的作用。 关键词:Android,视频通话,JMF,PC,RTP/RTCP

Design and Implementation of an Android-Based Video Calling System Abstract In recent years, the rapid development of smart phone operating system, especially Android system, has led the global smart phone market into explosion state. With some application such as mobile social networking, mobile media communications and mobile games being continually developed, a variety of application on smart phone operation systems are increasingly affecting and changing people’s lifestyles. The real-time video streams technology is used widely in such aspects as videophone, distance education and video on demand. The system based on android uses c/s architecture. It includes two clients. One is on the Windows system, the other one is on the Android 2.3 system. There are four subsystems. Each of clients has a send subsystem and a receiver subsystem. The main function of the receiver subsystem is to receiver data from internet and decodes that data. After that, it will display that data as soon as possible. The main function of the send subsystem is to collect data from camera and then encodes the data. After that, the data will be sanded to the Internet. On the PC client, we use the JMF framework. One the Android client, we use Android API. This paper firstly introduces the research condition of the video call and development tendency. It analysis some technologies about the video calling system and comes up with a feasible plan. It introduces the video calling system about requirement analysis, detailed design, realize and testing. This system achieves the cross-platform video calling. It becomes possible to make video calling between PC and Android and will enrich the people’s communication and entertainment in their daily lives. Key words: Android, video call, JMF, PC, RTP/RTCP

安卓Android ROM定制、移植:第六篇:boot.img、recovery解包和打包

太抱歉了,因为教程实在是有点粗浅了,其实很多东西都不知道怎么去写,这不是复制粘贴,当然很多只是一步步的走的,不过也许我自己觉得已经阐述的很清楚了,可是一旦别人看起来,还是感觉很深奥,没办法,本人就这点能力了,呵呵! 大家都知道安卓的核心更换呢,那是在boot.img里面,那么如何在WINDOWS下去解开它呢,LINUX的自己略过。。。。 首先百度BOOTIMG.EXE,然后你懂的,会出来一大堆,这得感谢制作bootimg.exe的作者,本来是为华为的机器做的分解工具,不过我们也可以拿来分解boot.img、recovery.img等,OK!先来谈谈这两个文件的基础,部分来自网络。 boot和recovery映像的文件结构 boot和recovery映像并不是一个完整的文件系统,它们是一种android自定义的文件格式,该格式包括了2K的文件头,后面紧跟着是用gzip压缩过的内核,再后面是一个ramdisk 内存盘,然后紧跟着第二阶段的载入器程序(这个载入器程序是可选的,在某些映像中或许没有这部分)。此类文件的定义可以从源代码android-src/system/core/mkbootimg找到一个叫做bootimg.h的文件。 (译者的话,原文是一个叫做mkbootimg.h的文件,但从Android 2.1的代码来看,该文件名应该是改为bootimg.h了)。 /* ** +-----------------+ ** | boot header | 1 page ** +-----------------+ ** | kernel | n pages ** +-----------------+ ** | ramdisk | m pages ** +-----------------+ ** | second stage | o pages ** +-----------------+

中文Android开发视频教学下载地址

中文名: 中文Android开发视频教学 资源格式: MP4 主讲人: mars 版本: https://www.sodocs.net/doc/66634458.html,/已经更新到18集 简介: 内容介绍: 本系列视频主要介绍的是Android平台的软件开发,每集大约半个小时左右,MP4格式,分辨率为1024 x 768,希望大家能够喜欢。

作者网站:https://www.sodocs.net/doc/66634458.html, 优酷空间地址:https://www.sodocs.net/doc/66634458.html,/marsandroid sina围脖:https://www.sodocs.net/doc/66634458.html,/marsandroid 以下是第一季第一集的优酷版本,下载版本比优酷版本要清晰一些,因为优酷会把视频进行转码,转码过后清晰度大幅下降! 电驴下载地址: https://www.sodocs.net/doc/66634458.html,/topics/2837883/ 115网盘下载地址如下: 第一季第一集: https://www.sodocs.net/doc/66634458.html,/file/f6e6aa3230 [中文Android开发视频教学].01_01_Android平台一日游.mp4 第一季第二集: https://www.sodocs.net/doc/66634458.html,/file/f6ef2d7913 [中文Android开发视频教学].01_02_搭建Android开发环境.mp4 第一季第三集: https://www.sodocs.net/doc/66634458.html,/file/f6db3e9dbd [中文Android开发视频教学].01_03_say_hello_to_Android.mp4 第一季第四集: https://www.sodocs.net/doc/66634458.html,/file/f634a3e484 [中文Android开发视频教学].01_04_Activity初步.mp4 第一季第五集: https://www.sodocs.net/doc/66634458.html,/file/f67918b525 [中文Android开发视频教学].01_05_Activity和Intent.mp4 第一季第六集: https://www.sodocs.net/doc/66634458.html,/file/f6478848ee [中文Android开发视频教学].01_06_Android当中的常见控件.mp4 第一季第七集: https://www.sodocs.net/doc/66634458.html,/file/f6475ae310 [中文Android开发视频教学].01_07_Activity生命周期(一).mp4 第一季第八集: https://www.sodocs.net/doc/66634458.html,/file/f62f1a0b06 [中文Android开发视频教学].01_08_Activity的生命周期(二).mp4 第一季第九集: https://www.sodocs.net/doc/66634458.html,/file/f6bda98262 [中文Android开发视频教学].01_09_Activity布局初步(一).mp4 第一季第十集: https://www.sodocs.net/doc/66634458.html,/file/f6e1d7efb8 [中文Android开发视频教学].01_10_Activity布局初步(二).mp4 第一季第十一集: https://www.sodocs.net/doc/66634458.html,/file/f69db38dc8

《老王》名师教(学)案(2课时)

《老王》名师教案 兰勇 (一)核心素养 语言建构与运用:如何通过生活细节来体现人物隐秘情感? 思维发展与提升:如何理解知识分子的情怀? 审美鉴赏与创造:如何通过人物对话来表现人物心理? 文化传承与理解:如何继承中国知识分子的济世精神? (二)设计示例 老王 绛 教学目标: 1.知识与技能:体会细节描写的作用,感受语言风格 2.情感与价值:感悟爱的博大,关爱生活中的不幸者,冶美的情操 3.方法与评价:通过独立阅读,形成自己独特而有创造性的见解。 教学重点:理解把握细节描写的含义及作用。 教学难点:理解知识分子的隐性情感。 课时安排:二课时 第一课时 教学重点:全面把握课文容,感受语言特色。 教学难点:领会从文章语言及人物刻画中渗透出的爱的博大。 预习作业: 1.熟读课文,了解生字词 2.了解绛 3.了解文革情况 4.了解底层劳动者的生存情况 一、导入 1.在生活中,你关注得最多的是什么人? 明星是因为有着耀眼的光环所以我们关注他们。伟人是因为做出了非凡的成就所以我们关注他们。而对亲人我们有深刻的感情所以我们关注……但是在我们

生活中接触得最多的是那些最不起眼的普通人。 2.今天老师就要给你们介绍一个这样的普通人,请看画像(幻灯)。他叫老王(板书),从画像上看,你觉得这是一个怎样的人?有何依据? 皱纹,历尽沧桑 衣着,贫穷 表情,善良 今天就让我们循着著名作家绛女士的笔迹,去体会这个生活在社会底层的老王不平凡的生命历程,去感受作者对老王的感情。 二、整体感知 (一)老王其人 1.请同学们默读课文,初步认识老王,并用课文中的原句填表。 2.老王的生活很苦,所幸他结识了作者一家。老王与作者一家发生很多故事。(二)老王与作者一家

基于Android的视频播放器的设计与实现

基于Android的视频播放器的设计与实现

基于Android的视频播放器的设计与实现 中文摘要 如今,随着基于Android操作系统的智能手机的广泛应用,视频播放器已成为智能手机的一个必不可少的程序,广大用户迫切需要一个贴近用户、方便用户、个性化的视频播放器。因此,设计一个基于android手机的多功能播放器,具有重要的实际意义。 本次毕业设计主要使用JDK + Eclipse + Android-SDK-Windows工具进行开发,使用的编程语言是Java语言。该程序主要由4个不同Activity来实现,每个Activity实现相应的功能模块,能够有效满足Android手机用户在视频播放中的常见需求。 本论文详细介绍了播放器程序的设计思路、设计方案、系统结构和项目工程结构,对系统的可行性与需求性进行了详细的分析,阐述了系统各个模块功能的设计与实现。对程序主要的Activity都进行了详细的介绍和分析,包括对其使用的布局文件的具体介绍,以及各个控件的作用。在最后进行了程序测试,对每一个实现的模块功能都做了测试,并且记录了大量截图用来展示测试结果,以观察程序应有的功能是否正常运行,以及发现程序中可能存在的问题。所开发的程序界面比较友好,操作相对容易,达到设计要求。 关键词:安卓;视频播放;Activity;Mediaplayer

The Design and Implementation of Video Player Based on Android ABSTRACT Now, with the wide application of smart phone based on the Android operating system, video player has become the essential application of smart phone. Most of consumers urgently require a personalized video player which is close to user and facilitate user. Therefore, the design of a multifunctional player based on android mobile phones has an important practical significance. The project design is developed by using JDK, Eclipse, and Android-SDK-Windows tools. The programming language is Java. The program consists of four different Activities and each Activity achieves the corresponding functional modules which can effectively satisfy the common requirements for playing video on Android mobile phones. This paper introduced the design ideas, design scheme, system architecture and project engineering structures of video player. The feasibility and requirements of system were analyzed in detail. The system function and each module were explained. The main Activity of the program are described and analyzed in detail including the using layout file, as well as the role of each control. Finally, I made the test for the program including the functions of each implemented modules. In order to observe whether the program should function properly and find the problems that may exist in the program, many screenshots were saved to demonstrate the test results. The developed program has a friendly interface and can be operated relatively easy, which has achieved the design requirement. KEY WORDS: Android; Video Play; Activity; Mediaplayer

android各版本区别

Android 4.0 与4.1 4.1有新的东西尤其帧速提高了3倍 首先,新版系统使用了新的处理架构,Android设备中出现的双核、四核处理器能得到更好的优化,发挥出强劲的性能表现。 其次,在新版系统中,特效动画的帧速提高至60fps,4.1版系统还将会优化最佳性能和很低的触摸延迟,提供一个流畅、直观的用户界面。 为了确保帧速一致,4.1版本的Android框架所有的绘图和动画都将统一VSYNC计时,应用渲染、触摸事件、画面构图、显示刷新等操作都会锁定在16毫秒响应,所有的帧都没有提前或者落后。 Android 4.1新增三重影像缓冲技术,让所有的渲染感觉更顺畅。触摸延时不仅会遵循VSYNC计时,还会在触摸操作时做出预判提前渲染,此外在CPU闲置时会分配更多的处理能力来应对触摸事件,确保触摸没有延迟。 SDK开发工具也将会提供一个新的工具systrace,可以让开发者从Linux内核中直接手机数据,来判断造成渲染中断的原因。 望采纳。 Android 4.1与4.2 没有本质变化。在细节之后做了一些改进与升级,比较重要的包括:Photo Sphere全景拍照;键盘手势输入;Miracast无线显示共享;手势放大缩小屏幕,以及为盲人用户设计的语音输出和手势模式导航功能等。尤其令人关注的是,谷歌在Android 4.2中新加入了新的恶意软件扫描功能。手机有:LG Nexus 4、三星I9250 Galaxy Nexus 红米,小米3啦,魅族mx3等都是基于安卓4.2深度开发的 android 4.2系统十大特性: 1、完整的Chrome浏览器 Android 4.2的Web浏览器的变化将非常受欢迎,支持选项卡浏览系统以及书签同步。这样的设计为了使手机和平板电脑的使用和传统PC使用无异。 2、全新的手机风景模式 作为Android 4.2,将集合手机以及平板电脑一体,在使用手机时,可以使用类似于平板电脑尺寸的风景模式,并且可以进行反转。 3、全新的文件管理器 Android 4.2将集合一个全新的文件管理器,使用户可以方便的管理SD卡上的文件,而不再依赖于第三方软件。 4、文本输入选项的改进 Android 4.2重新设计了键盘的布局,甚至将无用的数字和符号都一并略去了。

Android开发入门书籍推荐

Android开发入门书籍推荐 Android编程入门教程andbook andbook是我看到的最简单但最好的Android程序开发入门书籍,内容仅有60多页,图文并茂,如果你从来没有接触过Android开发,也完全可以通过阅读此书了解程序开发过程,甚至对APK程序的基本原理和Android UI界面开发有个清晰的认识,相信你花上几个小时读过后,一定会跃跃欲试加入Android开发行列,心动吧,那就行动吧。。。 Android应用开发详解 Android应用开发详解是一本Android应用开发书籍,既适合Android初学者,也适合具备了一定Android开发经验但需要开发案例的高级读者。该书分为三个部分,共18章,由浅入深地详细介绍了Android的每个开发细节。该书基础翔实,实例丰富,案例真实。从基础到案例覆盖了Android应用开发的三大领域:基础应用、网络应用和游戏应用。读者所需要学习的,正是该书描述的。

深入浅出Android–Google手持设备应用程序设计 入门书籍,作者写的很不错,可以在阅读SDK的同时阅读这本书,中间的一些使用介绍的非常清楚,最重要的是中文版的 Google Android应用框架原理与程式设计36技 最早介绍Android的中文书籍,台湾人写的繁体版的,看得有些影响,不过还是值得耐心阅读的 Android A Programmer’s Guide

多个专家写的介绍Android的书籍,内容写的很不错,Ask the Expert部分针对一些问题作了详细的说明 Android Essentials 对Android介绍的比较全面,从安装到开发,应该有新版本了。 Google Android SDK开发范例大全(第2版)

名师手把手教你写高考作文

名师手把手教你写高考作文 近日,郑州市高考第二次质量预测举行,这次二测材料作文的内容是:一位美籍华裔妇女用中国式教育方法严厉管教孩子,被称之为虎妈并登上了《时代》周刊的封面,从而引起人们对中美教育方法不同观点大讨论的问题,美国一些人对虎妈的做法大加赞赏,而中国孩子的家长们对此做法则产生了困惑和怀疑。 郑州市教育局教研室中学语文教研员、河南省特级教师、河南省高考作文研究专家高全套老师,郑州九中王世来老师、郑州中学李兰老师做客名师会客厅,就这篇作文具体分析,并给下步的高考作文备考提出了宝贵建议,同学们详细读一读,会对你们的高考作文有莫大的帮助。 □东方今报记者朱红珍 ●好作文要有好立意

高全套老师说,这次给出的作文材料,只是列出了不同观点的两种思考,并没有指出谁对谁错,实际上,两种看法各有利弊。正因为它具有两面性,就需要辩证地去看待它,既指出它正确的一面,又要看到他的不足之处。所以,这则材料的最佳立意是:要辩证地看问题,既要看到事物的正面,也要看到它的反面,从而趋利避害。教育问题是这样,社会生活中的其他问题也是这样。所以,表面看,这则材料谈的是教育问题,实际上学生写作时可以延伸到社会生活的各个领域。学生选择素材时,可以写与教育有关的事,也可以写教育以外的社会上的其他事情。可以写记叙文,也可以写议论文或其他文章体裁。只要能够辩证地分析或看待事物,就是符合题意的,辩证地看问题是这则材料的最佳角度,也就是一类卷。内容项的打分在16~20分。 ●二三类作文有点偏 高老师说,二类卷的立意有以下几种情况:只一味地强调要严格要求,比如严师出高徒,棍棒出孝子。或者一味地强调要宽一些,不能严。比如说宽松的环境有利于孩子的成长,严厉教育压抑了孩子的天性等,这些只单纯地强调一个方面、一个角度的文章,都归入二

android音视频的播放与录制

3G(3rd-generation第三代移动通信技术) 支持高速数据传输 提供移动快带多媒体业务 移动多媒体业务包括: 视频电话 视频会议 音/视频娱乐点播 移动实时监控 Android系统提供了视频录制、存储、播放、传输等功能。 Android系统支持3gp和mp4格式的视频文件 Android多媒体框架是基于第三方PacketVideo公司的OpenCore这个平台实现的 支持所有通用的音频、视频、静态图片格式 Android多媒体框架的核心其实就是Open Core框架 按当日的提供了上层的Media API给开发人员使用 如:MediaPlayer 可以实现音视频的播放和控制 MediaRecorder 可以实现音视频的录制 代码功能:在ListView行点击事件中启动播放视频的Activity(SystemMediaplayerActivity)//给ListView设置行点击事件监听器 getListview().setOnItemjclicklistener(new Onitemclicklistener()){ public void onItemclick(AdapterView parent,View view, int position, long id){ //通过行索引position获取当前的Videoinfo对象 Videoinfo video = videos.get(position); Ingtent intent = new Intent(videoListActivity.this, SystemMediaPlayerActivity.class); //传递视频路径 Intent.putExtra(“path”, video.path); Startactivity(intent); } }); //在SystemMediaPlayerActivity中调用系统播放器 Public class SystemMediaPlayerActivity extends Activity{ Protected void onCreate(Bundle savedInstanceState) Super.onCreate(savedInstanceState); //获取启动该Activity的Intent Intent intent = getIntent(); //获取Intent中传递的视频路径 String path = intent.getStringExtra(“path”); //创建新的意图

名师教学实录

名师教学实录 1亿以内数的认识 昆明市西山区海贝中英文小学孙勇 1引入和复习 (1)创设情境,引入课题。 师:2009年10月,我们国家举行了一次盛大的庆祝活动,今天我们首先来回忆一下这一历史时刻。 (播放国庆阅兵片段) 师:你们知道这是什么样的一个庆祝活动吗? 生:这是国庆阅兵。 师:对,这是我们国家为了庆祝新中国成立60周年举行的国庆阅兵活动,今天我们将通过一节数学课,进一步来了解这一次国庆阅兵。 (板书课题:亿以内数的认识) (2)复习10个一千是一万。 师:参加这次阅兵的除了陆军,还有海军和空军,一共有多少人参加了检阅呢?一起读一读。 (课件出示:参阅总人数约一万人) 生(齐):参阅总人数约一万人。 师:一万有多大? 生1:相当于10个一千。 生2:相当于100个一百。 生3:相当于1000个十。 师:一个这样的杯子中装有一千颗绿豆,如果老师想凑一万颗绿豆,可以怎么办? (举起装有一千颗绿豆的杯子) 生:需要10杯这样的绿豆。 师:用这样的一个杯子能装得下吗? 生:不能。 师:那老师换一个大一点的盒子来装,我们就将杯子中的绿豆一千颗一千颗地倒入盒子中,我们一起边倒边数。 生:一千、两千、三千、四千…… (师生边倒边数,数到一万) 师:我们倒了10杯绿豆凑成了一万颗,说明了什么? 生:10个一千是一万。 师:10个一千就是一万,那“一万”这个数你们会写吗?请同学们把“一万”这个数写在数位顺序表中。 (学生把10000写在自制的数位顺序表中,教师指名学生在黑板上写) 师:你是怎么写的? 生:在万位上写1,其他数位上都写0。 师:你们的写法和他的一样吗? 生:一样。 师:我们把“1”写在万位上,“1”所在的“万位”叫数位,万位上这个“1”表示什么意思呢?

相关主题