/*附源码。希望此文能帮助到一些新手。也希望更多的人在网络上分享自己的学习成果。*/1、开发环境Android是一种基于Linux®V2.6内核的综合操作环境。最初,Android的部署目标是移动电话领域,包括智能电话和更廉价的翻盖手机。Android全面的计算服务和丰富的功能支持完全有能力扩展到移动电话市场以外。Android也可以用于其他的平台和应用程序。下面搭建Android的开发环境。1.1JDK安装1、首先把所有要安装文件放在Android_software文件夹中;2、安装jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008文件;3、配置环境变量:(1)新建一个用户变量,变量名是JAVA_HOME,变量值为:JDK的安装路径;(2)查看系统变量Path,如果有显示路径加\bin,没有则加%JAVA_HOME%\bin;(3)查看class,如果有显示路径加\lib,没有则加%JAVA_HOME%\lib;4、解压eclipse-jee-juno-win32文件,运行eclipse.exe,在workspacelauncher窗口中,设置项目保存路径;1.2AndroidSDK安装以及系统设置在eclipse菜单栏的window子菜单下点击perferences,选择android,在右边的对话框中选择按钮Browse,找到SDK源文件,自动出来SDK包含的Android版本,点击Apply按钮,完成安装;在用户变量里面,新建一个JAVA_SDK变量,值设置的值为SDK安装的路径;在系统变量里面加入%JAVA_HOME%\bin,%JAVA_SDK%\tools,%JAVA_SDK%\platform-tools。图1.设置环境变量1.3Eclipse安装以及ADT工具的安装ADT插件的安装:(1)解压ADT文件;(2)打开eclipse菜单上help子目录下的Installnewsoftware;(3)在弹出的Install窗口中点击Add,在弹出的窗口中,name:ADTLocation:点击location按钮找到解压的ADT源文件;(4)安装成功后,重新启动eclipse;1.4模拟器的配置1、运行eclipse,在window子菜单下点击AVDManager开始配置模拟器;2、在AndroidVirtualDeviceManager下点击NEW,开始创建模拟器;3、在createnewAndroidVirtualManager窗口中,输入模拟器的名称、版本、存储卡大小,手机屏幕的分辨率,输入完后,点击CreateAVD,创建完成;4、在AndroidVirtualDeviceManager窗口中,选中模拟器后,点击start,启动模拟器。图2启动模拟器2、功能说明2.1软件结构与布局设计布局框架分为三个部分:图形菜单主界面menu_main.xml,对应类文件MediaPlay.java媒体功能实现界面menu_main.xmlmenuForMain.java媒体列表界面mylist.xml以及listview.xml样式布局listtype.xmlMediaList.java逻辑架构如下:2.2图像菜单功能主要控件及功能GalleryMyGallery:用于显示图形菜单,双击图片进入相应的功能界面TextViewmenuTv:用于显示菜单选项信息使用说明:1、双击MyGallery中装载的一组图片(屏幕底部)中的其中任何一张图片进入相应的功能面板2、通过在MyGallery滑动来达到更改菜单选项的功能3、menuTv会实时显示当前选中的菜单项的详细说明2.3音频文件播放主要控件及功能ImageButtonibtnPlayAndPuase开始/暂停ImageButtonibtnStop停止ImageButtonibtnLast,上一曲ImageButtonibtnNext;下一曲SeekBarMySeekBar;进度条TextViewMytvScreen;信息显示TextViewtbTimer;用于显示当前播放时间进度使用说明:1、当进入音乐播放界面时,后台读取保存在本地的音乐列表文件,若不存在列表文件则自动扫描/sdcard/Music/目录下音频文件2、播放和暂停键复用,当第一次点击播放按钮,再次点击则为暂停,再次点击则继续之前的位置播放;停止按钮则是将当前播放进度设置为0并暂停播放;上一曲、下一曲按钮则实现歌曲切换功能3、进度条和tbTimer控件则实时显示当前播放音乐的时间进度,MytvScreen会显示当前正在播放歌曲的详细信息2.4视频文件播放主要控件及功能ImageButtonibtnPlayAndPuase开始/暂停ImageButtonibtnStop停止ImageButtonibtnLast,上一曲ImageButtonibtnNext;下一曲SeekBarMySeekBar;进度条VideoViewMyVideoView;用于播放视频的组件使用说明:1、当进入视频播放界面时,后台读取保存在本地的视频列表文件,若不存在列表文件则自动扫描/sdcard/Video/目录下音频文件2、播放、暂停、上一部、下一步、停止以及进度条、时间显示条皆复用音乐界面的按钮,功能也与其一致,这里不赘述。2.5录音主要控件及功能ImageButtonibtnPlayAndPuase开始/暂停ImageButtonibtnStop停止ImageButtonibtnLast,上一曲ImageButtonibtnNext;下一曲SeekBarMySeekBar;进度条ButtonbtnRecording;录音开关使用说明:1、当进入录音界面时,后台读取保存在本地的视频列表文件,若不存在列表文件则自动扫描/sdcard/MyRecords/目录下录音文件2、播放、暂停、上一部、下一步、停止以及进度条、时间显示条皆复用音乐界面的按钮,功能也与其一致,这里不赘述。3、点击开始录音按钮,则按钮显示为“录音中...”,此时播放等按钮无法使用,进度条中间会显示当前的录音时间。在次点击此按钮则停止录音。此时可点击播放按钮试听刚才的录音。4、以上所有操作在主显示区域都会有文字描述3、软件设计与调试3.1软件在虚拟机上调试及分析3.1.1图形菜单核心代码://图片装载intMenuImages[]={R.drawable.menu4,R.drawable.menu1,R.drawable.menu2,R.drawable.menu3,R.drawable.menu5};MyGallery.setAdapter(newImageAdapter(this));publicclassImageAdapterextendsBaseAdapter{@OverridepublicViewgetView(intarg0,Viewarg1,ViewGrouparg2){//TODOAuto-generatedmethodstubImageViewi=newImageView(mContext);i.setImageResource(MenuImages[arg0]);i.setAdjustViewBounds(true);i.setLayoutParams(newGallery.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));//i.setBackgroundResource(R.drawable.e);returni;}}//页面跳转@OverridepublicbooleanonDoubleTap(MotionEventarg0){//TODOAuto-generatedmethodstubIntentMyIntent=newIntent();MyIntent.setClass(menuForMain.this,MediaPlay.class);BundleMyBundle=newBundle();MyBundle.putInt(name,MyGallery.getSelectedItemPosition());MyIntent.putExtras(MyBundle);startActivity(MyIntent);returnfalse;}3.1.2音乐播放播放:MyMediaPlayer.setDataSource(MusicList.get(Mediasp));MyMediaPlayer.prepare();MyMediaPlayer.start();//播放MyMediaPlayer.pause();//暂停MyMediaPlayer.pause();MyMediaPlayer.seekTo(0);//停止(为了能使点击播放按钮能在此播放,这里不调用MyMediaPlayer.stop()方法)3.1.3视频播放器MyVideoView.setVideoURI(Uri.parse(VideoList.get(Mediasp)));//设置视频源MyVideoView.start();//播放MyMediaPlayer.pause();//暂停MyVideoView.pause();MyVideoView.seekTo(0);//停止3.1.4录音//播放newDateFormat();file=newFile(/sdcard/MyRecords/+bear+DateFormat.format(yyyyMMdd_hhmmss,Calendar.getInstance(Locale.CHINA))+.amr);FiledestDir=newFile(/sdcard/MyRecords/);if(!destDir.exists()){destDir.mkdirs();}MyMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);MyMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);MyMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);file.createNewFile();MyMediaRecorder.setOutputFile(file.getAbsolutePath());MyMediaRecorder.prepare();MyMediaRecorder.start();//停止录音MyMediaRecorder.reset();须加一个权限开发,在AndroidManifest.xml:uses-permissionandroid:name=android.permission.RECORD_AUDIO/uses-permissionuses-permissionandroid:name=android.permission.WRITE_EXTERNAL_STORAGE/uses-permission3.1.5、公共方法//1、滑动屏幕改变媒体音量//设置音量MyAudioManager=(AudioManager)this.getSystemService(Context.AUDIO_SERVICE);//2、添加屏幕触发事件MyGestureDetector=newGestureDetector(this,newMyGestureDetectorListener());MytvScreen.setOnTouchListener(newOnTouchListener(){@OverridepublicbooleanonTouch(Viewarg0,MotionEventarg1){returnMyGestureDetector.onTouchEve