android特色开发例子.doc_第1页
android特色开发例子.doc_第2页
android特色开发例子.doc_第3页
android特色开发例子.doc_第4页
android特色开发例子.doc_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Android特别开发音乐播放器开发步骤:1、布局音乐相关操作按钮控件。播放音乐控件、暂停音乐控件、上一首、下一首和最后一首。这部分的内容在main.xml文件中进行编写。运行结果见下图主要代码见下图2、使用ArrayAdapter进行音乐的绑定和前台的显示3、在Activity中获取相关的控件4、编写每一个控件对应的事件5、编写播放音乐函数6、编写播放上一首音乐函数7、编写播放下一首音乐函数8、编写选择音乐播放函数9、编写释放资源函数10、将音乐相关的函数和控件事件进行关联本例子Activity主要代码见下:package com.terry;import java.io.File;import java.util.ArrayList;import java.util.List; import android.app.ListActivity;import android.media.MediaPlayer;import android.media.MediaPlayer.OnCompletionListener;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.view.View.OnClickListener;import android.widget.ArrayAdapter;import android.widget.Button;import android.widget.ListView;public class musicActivity extends ListActivity /播放对象private MediaPlayer myMediaPlayer;/播放列表private List myMusicList=new ArrayList();/当前播放歌曲的索引private int currentListItem=0;/音乐的路径private static final String MUSIC_PATH=new String(/sdcard/); /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); myMediaPlayer=new MediaPlayer(); findView(); musicList(); listener(); /绑定音乐 void musicList() File home=new File(MUSIC_PATH); if(home.listFiles(new MusicFilter().length0) for(File file:home.listFiles(new MusicFilter() myMusicList.add(file.getName(); ArrayAdapter musicList=new ArrayAdapter (musicActivity.this,R.layout.musicitme, myMusicList); setListAdapter(musicList); /获取按钮 void findView() viewHolder.start=(Button)findViewById(R.id.start); viewHolder.stop=(Button)findViewById(R.id.stop); viewHolder.next=(Button)findViewById(R.id.next); viewHolder.pause=(Button)findViewById(R.id.pause); viewHolder.last=(Button)findViewById(R.id.last); /监听事件 void listener() /停止 viewHolder.stop.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubif(myMediaPlayer.isPlaying()myMediaPlayer.reset();); /开始 viewHolder.start.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubplayMusic(MUSIC_PATH+myMusicList.get(currentListItem);); /下一首 viewHolder.next.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubnextMusic();); /暂停 viewHolder.pause.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stubif(myMediaPlayer.isPlaying()myMediaPlayer.pause();elsemyMediaPlayer.start();); /上一首 viewHolder.last.setOnClickListener(new OnClickListener() Overridepublic void onClick(View v) / TODO Auto-generated method stublastMusic();); /播放音乐 void playMusic(String path) try myMediaPlayer.reset();myMediaPlayer.setDataSource(path);myMediaPlayer.prepare();myMediaPlayer.start();myMediaPlayer.setOnCompletionListener(new OnCompletionListener() Overridepublic void onCompletion(MediaPlayer mp) / TODO Auto-generated method stubnextMusic();); catch (Exception e) / TODO: handle exceptione.printStackTrace(); /下一首 void nextMusic() if(+currentListItem=myMusicList.size() currentListItem=0; else playMusic(MUSIC_PATH+myMusicList.get(currentListItem); /上一首 void lastMusic() if(currentListItem!=0) if(-currentListItem=0) currentListItem=myMusicList.size(); else playMusic(MUSIC_PATH+myMusicList.get(currentListItem); else playMusic(MUSIC_PATH+myMusicList.get(currentListItem); /当用户返回时结束音乐并释放音乐对象 Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) / TODO Auto-generated method stub if(keyCode=KeyEvent.KEYCODE_BACK) myMediaPlayer.stop(); myMediaPlayer.release(); this.finish(); return true; return super.onKeyDown(keyCode, event); /当选择列表项时播放音乐 Overrideprotected void onListItemClick(ListView l, View v, int position, long id) / TODO Auto-generated method stubcurrentListItem=position;playMusic(MUSIC_PATH+myMusicList.get(currentListItem); 录音开发步骤:1、在main.xml文件中进行控件的布局主要代码见下2、在Activity中获取相应控件3、为控件添加监听器4、编写录音和停止录音的函数具体代码见下:package com.qiaozi.luying;import java.io.File;import java.io.IOException;import java.util.Calendar;import java.util.Locale;import android.app.Activity;import android.media.MediaRecorder;import android.os.Bundle;import android.text.format.DateFormat;import android.view.View;import android.widget.Button;import android.widget.Toast;public class MainActivity extends Activity private Button recordButton;private Button stopButton;private MediaRecorder mr;Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.main);recordButton = (Button) this.findViewById(R.id.Button01);stopButton = (Button) this.findViewById(R.id.Button02);/ 录音按钮点击事件recordButton.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) File file = new File(/sdcard/+ YY+ new DateFormat().format(yyyyMMdd_HHmmss,Calendar.getInstance(Locale.CHINA) + .amr);Toast.makeText(getApplicationContext(), 正在录音,录音文件在+file.getAbsolutePath(), Toast.LENGTH_LONG).show();/ 创建录音对象mr = new MediaRecorder();/ 从麦克风源进行录音mr.setAudioSource(MediaRecorder.AudioSource.DEFAULT);/ 设置输出格式mr.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);/ 设置编码格式mr.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);/ 设置输出文件mr.setOutputFile(file.getAbsolutePath();try / 创建文件file.createNewFile();/ 准备录制mr.prepare(); catch (IllegalStateException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();/ 开始录制mr.start();recordButton.setText(录音中););/ 停止按钮点击事件stopButton.setOnClickListener(new View.OnClickListener() Overridepublic void onClick(View v) if (mr != null) mr.stop();mr.release();mr = null;recordButton.setText(录音);Toast.makeText(getApplicationContext(), 录音完毕, Toast.LENGTH_LONG).show(););重力感应本例主要内容是创建感应器和绘制感应球1、创建一个传感器,指定传感器的类型2、为传感器设置监听器3、注册监听器4、绘制感应球(这里根据传感器的值改变小球的动作)下面为例子的主要代码:package com.himi;import android.app.Service;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.RectF;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.util.Log;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.SurfaceHolder.Callback;/*Sensor 加速度传感器 ,也称为重力传感器 *SDK 1.5(api 3)就支持传感器了 *解释:此传感器不仅对玩家反转手机的动作可以检测到,而且会根据反转手机的程度,得到传感器的值也会不同! */public class MySurfaceView extends SurfaceView implements Callback, Runnable private Thread th = new Thread(this);private SurfaceHolder sfh;private Canvas canvas;private Paint paint;private SensorManager sm;private Sensor sensor;private SensorEventListener mySensorListener;private int arc_x, arc_y;/ 圆形的x,y位置private float x = 0, y = 0, z = 0;public MySurfaceView(Context context) super(context);this.setKeepScreenOn(true);sfh = this.getHolder();sfh.addCallback(this);paint = new Paint();paint.setAntiAlias(true);setFocusable(true);setFocusableInTouchMode(true);/通过服务得到传感器管理对象 sm = (SensorManager) MainActivity.ma.getSystemService(Service.SENSOR_SERVICE);sensor = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);/得到一个重力传感器实例/TYPE_ACCELEROMETER 加速度传感器(重力传感器)类型。/TYPE_ALL 描述所有类型的传感器。/TYPE_GYROSCOPE 陀螺仪传感器类型/TYPE_LIGHT 光传感器类型/TYPE_MAGNETIC_FIELD 恒定磁场传感器类型。/TYPE_ORIENTATION 方向传感器类型。/TYPE_PRESSURE 描述一个恒定的压力传感器类型/TYPE_PROXIMITY 常量描述型接近传感器/TYPE_TEMPERATURE 温度传感器类型描述mySensorListener = new SensorEventListener() Override/传感器获取值发生改变时在响应此函数public void onSensorChanged(SensorEvent event) /备注1 /传感器获取值发生改变,在此处理 x = event.values0; /手机横向翻滚/x0 说明当前手机左翻 x0 说明当前手机下翻 y0 手机屏幕朝上 z0 手机屏幕朝下arc_x -= x;/备注2arc_y += y;Override/传感器的精度发生改变时响应此函数public void onAccuracyChanged(Sensor sensor, int accuracy) / TODO Auto-generated method stub;sm.registerListener(mySensorListener, sensor, SensorManager.SENSOR_DELAY_GAME);/第一个参数是传感器监听器,第二个是需要监听的传感实例/最后一个参数是监听的传感器速率类型: 一共一下四种形式/SENSOR_DELAY_NORMAL 正常/SENSOR_DELAY_UI 适合界面/SENSOR_DELAY_GAME 适合游戏 (我们必须选这个呀 哇哈哈)/SENSOR_DELAY_FASTEST 最快public void surfaceCreated(SurfaceHolder holder) arc_x = this.getWidth() / 2 - 25;arc_y = this.getHeight() / 2 - 25;th.start();public void draw() try canvas = sfh.lockCanvas();if (canvas != null) canvas.drawColor(Color.BLACK);paint.setColor(Color.RED);canvas.drawArc(new RectF(arc_x, arc_y, arc_x + 50,arc_y + 50), 0, 360, true, paint);paint.setColor(Color.YELLOW);canvas.drawText(当前重力传感器的值:, arc_x - 50, arc_y-30, paint);canvas.drawText(x= + x + ,y= + y + ,z= + z,arc_x - 50, arc_y, paint);String temp_str = Himi提示: ;String temp_str2 = ;String temp_str3 = ;if (x -1 & y -1) temp_str += 当前手机处于水平放置的状态;if (z 0) temp_str2 += 并且屏幕朝上; else temp_str2 += 并且屏幕朝下,提示别躺着玩手机,对眼睛不好哟; else if (x 1) temp_str2 += 当前手机处于向左翻的状态; else if (x 1) temp_str2 += 当前手机处于向下翻的状态; else if (y 0) temp_str3 += 并且屏幕朝上; else temp_str3 += 并且屏幕朝下,提示别躺着玩手机,对眼睛不好哟;paint.setTextSize(20);canvas.drawText(temp_str, 0, 50, paint);canvas.drawText(temp_str2, 0, 80, paint);canvas.drawText(temp_str3, 0, 110, paint); catch (Exception e) Log.v(Himi, draw is Error!); finally sfh.unlockCanvasAndPost(canvas);Overridepublic void run() / TODO Auto-generated method stubwhile (true) draw();try Thread.sleep(100); catch (Exception ex) public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) public void surfaceDestroyed(SurfaceHolder holder) package com.himi;import android.app.Activity;import android.os.Bundle;import android.view.Window;import android.view.WindowManager;public class MainActivity extends Activity public static MainActivity ma;Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);ma = this;getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);this.requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(new MySurfaceView(this);运行结果见下图Google Map第一步:安装Google Map API在默认情况下,在安装Google Android SDK时,是不需要必须安装Google Map API的。但要做Map应用的话,就必须安装Google Map API。我们可以通过启动Android SDK and AVD Manager这个SDK管理器去下载安装Google Map API。在启动SDK管理器后,选择“Installed Options”,去查看你已经安装了哪些SDK和是否已经安装Google Map API,如果尚未安装的话,可以在“Available Packages”中查找并下载安装,如下图所示:第二步:建立Eclipse 工程当下载完Google API后,就可以开始新建Eclipse工程了,我们把这个工程命名为AndroidGoogleMapsProject,如下图,注意必须在Build Target中勾选Google API,而Application name和Package name的填写如上图所示。第三步:获得Google Map API Key在正式使用Google Map API前,必须先生成Google Map API KEY。具体的详细步骤请参考一文(/intl/zh-CN/android/add-ons/google-apis/mapkey.html),下面概括了其要点如下。首先,我们要使用Java下的keytool工具,产生MD5密纹,这个是跟你的证书所关联的,在使用Google Map API时进行对证书校验。Keytool这个文件一般位于%JAVA_HOME%/bin目录下,如果是Linux系统,则位于$JAVA_HOME/bin下的,比如windows下在C:programsJavajdk1.6.0_18bin下。在开发Android程序时,一般是在debug调试模式下开发的,这时SDK的build tools会自动使用debug模式下的证书对应用进行签名的,为了产生debug模式下证书的MD5密纹,我们必须找到debug模式下的keystore密钥库,在不同的操作系统中,keystore位于如下位置: Windows Vista: C:Users.androiddebug.keystore Windows XP: C:DocumentsandSettings.androiddebug.keystore OS XandLinux: /.android/debug.keystore接下来,我们开始使用keytool工具产生md5密纹,下面就应该是用keytool生成MD5指纹的过程了:运行cmd,进入到keytool的目录下,输入keytool -list -keystore debug.keystore(只有已经将debug.store拷贝到同目录下时可用),否则的话应该这样keytool -list -alias androiddebugkey -keystore 路径debug.keystore - storepassandroid -keypass android,注意要有双引号。接着就是进行申请,网址如下:/and

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论