android开发人员工作总结.docx

上传人:b****6 文档编号:6507191 上传时间:2023-01-07 格式:DOCX 页数:15 大小:25.96KB
下载 相关 举报
android开发人员工作总结.docx_第1页
第1页 / 共15页
android开发人员工作总结.docx_第2页
第2页 / 共15页
android开发人员工作总结.docx_第3页
第3页 / 共15页
android开发人员工作总结.docx_第4页
第4页 / 共15页
android开发人员工作总结.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

android开发人员工作总结.docx

《android开发人员工作总结.docx》由会员分享,可在线阅读,更多相关《android开发人员工作总结.docx(15页珍藏版)》请在冰豆网上搜索。

android开发人员工作总结.docx

android开发人员工作总结

android开发人员工作总结2021

项目开发总结报告

1引言

1.1编写目的

总结开发经验与学习中的不足

1.2背景

以方便用户记录日常学习心得,生活体会为目的,进行主题为“随心笔记”的应用开发

2实际开发结果

2.1产品

2.2主要功能和性能

能够查看笔记的目录,记录笔记完成时间。

能够改变主题颜色,目录排版方式,拥有简洁的主题。

对于涂鸦功能,插入图片,密码锁等功能未能实现。

3开发工作评价

3.1对产品质量的评价

本应用拥有简单实用的功能,能够满足一般用户的需要

3.3对技术方法的评价

开发中使用了软件工程中的增量开发模型,黑盒测试等技术,使开发逐步向前发展

3.4出错原因的分析^p

对于部分Android版本支持性不好,不能正常使用安装等

24经验与教训

通过这次开发,我们体验了开发不易,需要很多人员的合作。

开发过程中,必须明确整体目标,不能东一榔头,西一棒槌。

另外由于学习时间短,对很多东西都不太了解,还好通过CSDN等一些网站能够找到有益的帮助,感谢那些博客,论坛。

Android开发基础教程

20__-4-13周一2CJ02目录

1.什么是Android?

2.Android应用开发环境3.Gradle4.模拟器Emulator5.开发一个安卓应用程序的步骤6.关于多个模拟器的问题7.安卓工程文件的结构8.android界面文件---_ml文件9.android程序文件---文件10.界面布局方式11.几个常用组件12.Roast组件13.对话框AlertDialog14.几条重要的语句15.监听器Listener16.识别响应事件的组件17.界面切换

18.界面之间的数据传递19.Activity生命周期20.多媒体播放

21.日志文件在程序调试中的使用22.使用_ML文件保存数据

23.使用T_T文件保存数据24.使用数据库保存数据25.时间组件26.线程Thread27.视频播放VideoView28.MediaPlayer,SurfaceView和SurfaceHolder播放视频29.录制音频MediaRecorder30.菜单组件

1.什么是Android?

移动设备(常常指手机mobile)的操作系统,由google公司出品,是免费的,最早是基于Linu_平台的;目前已经推出的Android3.0是平板电脑上的操作系统。

其它的手机操作系统有:

iPhone系统等。

手机厂商:

三星(Samsung,宏达电(HTC),摩托罗拉(Motorola),华硕,索尼,Garmin等都支持iPhone系统。

Android系统功能:

自定义用户界面,支持蓝牙,多点触摸,具有导航功能和语音识别功能,结合了google地图。

Android软件开发工具SDK

4.0。

Android系统特点:

虚拟键盘,以WebKit为核心的WebView组件,可以使用HTML,script等。

2.Android应用开发环境Eclipse+ADT+AndroidSDK。

ADT---Android开发工具插件(AndroidPlugsforEclipse).开发环境安装注意事项:

关闭防毒软件,按顺序安装,保持网络畅通,比较耗时。

特别说明,安装和运行需要高配置机器和高速网络,比较费时。

(1)安装

JDK。

甲骨文

网站:

/pushChar,putShort,putBoolean,pushChar等等

Uriuri=Uri.parse(“/getDouble,2.方法2:

调用有返回参数例1,在第一个界面中:

privatestaticfinalintACTIVITY_EDIT=1;Bundlebundle=newBundle;bundle.pushString(“name”,“David”);Intentin=newIntent;

getShort,getIntArray等in.putE_tras(bundle);in.setCla(FullscreenActivity.this,SecondActivity.cla);startActivityForResult(in,ACTIVITY_EDIT);注意:

startActivityForResult后所有语句无效,不执行;在第一个界面中,第二个界面可以在不同位置被多次调用;在第一个界面中,在其它位置可以调用其它界面。

在第一个界面中,重写onActivityResult,接收所有被调用界面返回的参数(如果有):

@OverrideprotectedvoidonActivityResult(int

requestCode,intresultCode,Intent

data){super.onActivityResult(requestCode,resultCode,data);if(requestCode==ACTIVITY_EDIT)

//此参数可以区分不同的调用

{

Bundlebundle=data.getE_tras;if(resultCode==RESULT_OK)

//此参数可以判断有无返回参数

{

Bundlebundle=data.getE_tras;……

}if

(resultCode==RESULT_CANCELED)

{}}

……}……

问题

如何判断被调用界面是否传递返回参数?

如何区分返回参数是由不同的被调用界面传递的?

android的这种解决方法并不是完美的。

例2,在第二个界面中:

读取第一个界面传递的参数,省略;下面是向调用程序传递返回参数:

Bundlebundle

=newBundle;bndle.pushString(“name”,“贺昌峰373780592”);Intent

setResult(RESULT_CANCELED);//传递参数返回

//或setResult(RESULT_OK,in);//不传递参数返回finish;注意:

这时,第二个界面返回到第一个界面,可以不传递参数直接返回(RESULT_CANCELED),

in=newIntent;

in.putE_tras(bundle);也可以传递参数返回(RESULT_OK)。

19.Activity生命周期

onCreate

---onStart

---onResume

---onPause---onS

---onDestroy也就是说,有:

protectedvoidoncreate(…){….}protectedvoidonStart(…){….}protectedvoidonResume(…){….

}protectedvoidonPause(…){

….}protectedvoidonS(…){….

}protected

voidonDestroy(…){….

}20.多媒体播放MediaPlayerpublicMediaPlayerplayer=newMediaPlayer;//生成语句可省略try{player.reset;

//重新播放音乐

player.setDataSource(“/sdcard/music/music_file_name.”);

//player=MediaPlayer.create(getlicationConte_t,R.raw.music);

//打开音乐文件

//music为音乐资文件

player.prepare;player.start;

//player.isPlaying

//准备播放//播放音乐

//判断是否正在播放

//音乐播放完成触发事件

player.setOnpletionListener(newOnpletionListener){publicvoidonpletion{//音乐播放完成后,处理代码}}

player.pause;player.start;player.s;

}catch(IllegalStateE_ceptione){……}catch(IOE_ceptione){……}

//播放暂停//继续播放音乐//停止播放音乐player.release;

//释放存储空间

//注意:

可以播放存储卡上任意一个音乐文件;也可以播放资列表中的音乐文件21.日志文件在程序调试中的使用

importandroid.util.Log;对应的方法有:

debug,verbose,info,warn,error。

注意,使用简写。

问题:

如何查看系统日志文件?

Log.d(“这里是分类标签”,“这里是输出信息”);22.使用_ML文件保存数据

对_ML文件进行操作,形式为(key,value)。

SharedPreferences

sp=getSharedPreferences(文件名,权限);

权限:

MODE_PRIVATE,MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE例:

//1打开_ML文件SharedPreferences

//2更改数据

Editoreditor=sp.eidt;

//更改数据

sp=getSharedPreferences(“myconfig”,MODE_PRIVATE);

editor.putString(“name”,“贺昌峰373780592”);editor.putInt(“age”,48);editor.putFloat(“salary”,2048.5);//putLong,putBoolean等;

editor.mit;

//保存数据

//3读取数据

Stringmyname=sp.getString(“name”,“”);

//4删除数据

editor.remove(“name”);//删除数据editor.mit;

editor.clear;//删除全部数据editor.mit;

//5简写形式如下:

Editoreditor=sp.eidt

//更改数据

//读取数据

.putString(“name”,.mit;

“贺昌峰”)23.使用T_T文件保存数据FileOutPutStream

fout=openFileOutput(文件名,文件权限);文件权限:

MODE_PRIVATE,MODE_WORLD_READABLE,MODE_WORLD_WRITEABLE

1.在文件中写入数据

try{//打开T_T文件FileOutPutStream

BufferedOutputStream

String

//向文件中写入数据

bufferoutput.write(s.getBytes);s=“大家跟我学习android”;

bufferoutput=newBufferedOutputStream(fout);fout=openFileOutput(“myconfig.t_t”,MODE_PRIVATE);

//关闭文件bufferoutput.close;fout.close;}Catch(E_ceptione){

2.从文件中读取数据

try{FileInputStream

BufferedInputStream

byte[]bufferbytes=newbyte[20];intflag=bufferoutput.read(bufferbytes);if(flag==-1){//文件读取到文件末尾,否则可以继续读出

}

//仅读取长度为20个字节的数据

bufferoutput=newBufferedInputStream(fout);

fout=openFileInput(“myconfig.t_t”);

//打开文件

e.printStackTrace;}bufferoutput.close;fout.close;}Catch(E_ceptione){

24.使用数据库保存数据1.数据库相关类

//关闭缓冲区//关闭文件

e.printStackTrace;}importandroid.content.ContentValues;importandroid.content.Conte_t;importandroid.database.Coursor;importandroid.database.SQLE_ception;importandroid.database.sqlite.SQLiteDatabase;

2.SQLiteDataBase类

注意:

数据库操作时,要求捕获异常,此处省略。

SQLiteDataBasedb=openOrCreateDatabase(“databasename.db”,MODE_PRIVATE);//说明:

数据库权限同文件权限

//Conte_t就是this指针db.e_ecSQL(sql_e_p):

执行SQL语句

Cursorcs=db.rawQuery(select_e_p,null):

返回数据集。

Cursorcs1=db.query(arg0,……):

使用较繁琐,可用rawQuery替换。

db.insert(arg0,……):

使用较繁琐,可用rawQuery替换。

db.delete(arg0,……):

使用较繁琐,可用rawQuery替换。

db.update(arg0,……):

使用较繁琐,可用rawQuery替换

db.close:

一般写在onDestroy事件中。

3.Cursor类方法有:

move,moveosition,moveToFirst,moveToLast,

moveToNe_t,getCount,getInt,

getString,

isNull,isFirst等等。

4.ContentValues类

一般用在SQLiteDataBase.insert中,此处省略。

ContentValuescontent

=newContentValues;

content.put(“name”,“贺昌峰”);

moverevious,content.put(“age”,48);5.SimpleCursorAdapter类

SimpleCursorAdapter是界面组件如ListView和Cursor的桥梁。

例,在ListView组件listview1中,显示数据集(有绑定功能吗?

):

Cursorcs=db.rawQuery(“selectSimpleCursorAdapter

adapter

_

fromtable”,null);

=newSimpleCursorAdapter(this,android.R.layout.simple_list_item_2,newString[]{“id”,“name”},newint[]{android.R.id.te_t1,android.R.id.te_t2});//注意:

第2个参数的作用

listview1.setAdapter(cs);

//在ListView组件显示数据集

25.时间组件

1.常用组件AnalogClock,

DigitClock用法比较简单,无需过多设置,仅仅显示当前时间:

机械式,数字式

2.计时组件:

Chronometer常用方法:

start开始计时,s停止计时,setBase设置时间setFormat(“秒表:

s”):

设置组件时间显示格式。

附:

与时间格式有关的函数SimpleDateFormatString

sformat=newSimpleDateFormats(“hh:

mm:

”);

//得得当前时间s=sformat.format(newDate);

例,Chronometer对象是chroTime:

chroTime.setOnChronometerTickListeter(chrolisteten);

privateChronometer.onChronometerTickListeterChronometer.onChronometerTickListeter{@Overridepublic

voidOnChronometerTickListeter(Chronometerchronomoter){//每秒执行一次该方法}}

3.计时组件Timer和TimerTask

chrolisteten=new常用函数:

schedule(TimerTask对象,Timer对象延迟时间,TimerTask对象间隔时间);

TimerTask对象用法:

privateTimerTask{publicvoidrun{//按设定间隔调用执行handle.sendMeage(msg);//特别注意:

此处不能对界面进行更新,因为影响计时精度,所有需要使用Handle配合。

见下。

}}

4.Handle和Meage的配合使用Handlehandle{publicvoidhandleMeage{super.handleMeage;//进行其它处理}

=newHandle

timetask=newTimerTask}Meage

msg.what=“______”;handle.sendMeage(msg);

26.线程Thread

1.Thread的定义

publicclaClockThreade_tendsThread{@Overridepublicvoidrun{//进行其它处理

//注意:

不会自动重复执行多次的}}2.Thread的启动、延时启动、停止使用Handle对线程进行控制:

msg=newMeage;Handlehandle=newHandle;

ClockThreadclock=newClockThread;

handle.post(clock);

//启动线程5000);

//延时5000ms启动线程//停止线程handle.postDelayed(clock,handle.removeCallbacks(clock);

问题:

使用Handle有什么优点?

27.视频播放VideoView支持的文件格式:

H.264的mp4,wmv,3gp等。

1.视频播放

privateVideoView

videoview.setVideoPath(“/sdcard/robot.mp4”);//增加控制面板

videoview.setMediaController(newMediaController(getlicationConte_t));

videoview

=newVideoView;videoview.start;//开始播放

2.视频准备播放事件

videoview.setOnPreparedListener(videoPreparedListener);videoview.setOnpletionListener(videopletionListener);

privateMediaPlayer.onPreparedListenervideoPreparedListener=newMediaPlayer.onPreparedListener{@Overridepublic

voidonPrepared(MediaPlayer

mp){//视频准备播放}}

3.视频播放完成事件

privateMediaPlayer.onpletionListenervideopletionListener=MediaPlayer.onpletionListener{@Overridepublic

voidonpletion(MediaPlayer

mp){

new//视频播放完成}}

28.MediaPlayer,SurfaceView和SurfaceHolder播放视频

MediaPlayer也可以播放视频,需要SurfaceView和SurfaceHolder配合,其中SurfaceView为可视化组件可以播放视频,SurfaceHolder为桥梁。

privateSurfaceViewsurfview=newSurfaceView;//此组件可视化设计,无需这里声明privateMediaPlayer

surfholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);mediaplayer.setAudioStreamType(AudioManager.STREAM_MUSIC);mediaplayer.setDisplay(surfholder);

mediaplayer.setDataSource(“/sdcard/vedio.mp4”);mediaplayer.reset;

//打开视频文件

mediaplayer=newMediaPlayer;

=surfview.getHolder;privateSurfaceHoldersurfholder

//重新播放视频mediaplayer.prepare;mediaplayer.start;mediaplayer.s;mediaplayer.release;

//准备播放视频//播放视频

29.录制音频MediaRecorderMediaRecorder

mediaRecorder.SetAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.SetAudioEncode(MediaRecorder.AudioEncode.DEFAULT);mediaRecorder.SetOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mediaRecorder.SetOutputFile(“/sdcard/recorder.amr”);mediaRecorder.prepare;mediaRecorder.start;

注意:

要有写入SD卡的权限,在AndroidManifest._ml文件中:

//准备录音//开始录音

mediaRecorder=newMediaRecorder;:

1.附1:

ImageView.setAlpha(50)的含义?

设置透明色2.附2:

遍历目录下所有文件:

privateFilepathfile;pathfile

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1