android实习程序——音乐播放器(简单播放)

做一下知识点的准备
android四大组件
actvity
service
广播接收者
内容提供者


MVC
activity c
View     v

界面是如何呈现的?
Window
通过getWindow()方法来获得窗口

将view让入窗口呈现
setContentView(view);

xml是一种数据的封装格式
字符串
如何把字符串转换成view对象
反射技术--解析xml

在android中是用什么解析的
Inflater
用LayoutInflater.from(this)来获取Inflater

用inflate(R.layout.main, null);

-----------------------
在自定义view时需要传入一个应用程序上下文对象

书---
书的封面--作者,出版社,发行日期。。。。。。

我在给你书的时候只撕给你书中的一页纸,你能得到这些信息吗?

把书页和封面全部装订在一起就行

组合
---------------------------
如何给你张白纸,你如何将它变成美丽的画


在android中的界面就是画出来的
onDraw

Canvas画布
Paint画笔

所有的类名首字母大写

总结:
activity
window
View
三者之间的关系?

Inflater的作用?

Context的作用?

如何自定义view?

---------------------------

Adapter的作用

做软件就是要进行数据的处理
处理完了还要展示给用户

在写adapter要关注的两点
数据源
界面
ArrayAdapter()
SimpleAdapter()

---------------------------
setContentView(R.layout.main)有什么缺点
它用的是反射,一定会消耗资源,性能不好,不适合需要高性能的情况,也不适合复杂界面

游戏

2个项目
1108班学员做的
简单通讯录
五子棋
---------------------------
要有良好的java基础
空指针
java是面向对象的设计语言
是靠对象和类来调用方法来完成业务逻辑的。

service本身是和Activity在同一线程的
如果要使service能执行异步的操作必须在service中开启新的线程。

那问题来了,为什么不在Activity中直接开启线程,而要用到service。

因为service的级别要高,不容易被系统杀死。


android中的进程等级
Foreground process 前台进程
Visible process 可见进程
Service process 服务进程
Background process 后台进程
Empty process 空进程


android在系统资源不够时会自动杀死某些进程

Service有两种启动方式
startService--无需交互自动执行时使用
bindService--需要进行交互时

ServiceConnection服务连接器

创建一个服务

在onStart方法中建立于服务的连接
绑定服务
bindService(_Intent,
      conn, 
      BIND_AUTO_CREATE);

连接器有两个方法
一个在服务连接时掉用
传入一个IBinder用于我们连接服务的钥匙

服务连接后会调用IBinder方法
在这个方法中创建媒体播放器
MediaPlayer.create(this, R.raw.hetang);
将钥匙返回去
钥匙的功能是将服务本身返回
供外部使用

在Activiy接收服务对象
从钥匙中拿到我们要的对象
((MyBinder)service).getKey()

得到了服务的实例以后我们就可以使用服务中的方法,来调动媒体播放器了


!!!!
得到服务的目的就是要调用服务的方法来控制音乐的播放
!!!!

记得在onDestroy中要解除绑定

一个在服务断开连接时调用

======================================
音乐播放器
MusicMediaActivity.java
package com.tarena.Music;

import com.tarena.Music.MusicService.MyBinder;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;

public class MusicMediaActivity extends Activity {
    private ImageButton mButton;
    private MusicService mMusicService;
    
    private ServiceConnection conn=new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
// TODO Auto-generated method stub
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
//从钥匙中拿出服务对象
mMusicService=((MyBinder)service).getKey();
}
};
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        mButton=(ImageButton)findViewById(R.id.pause);
        mButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
mMusicService.start();
}
});
    }
    
    @Override
    protected void onStart() {
      super.onStart();
      Intent _Intent = 
      new Intent(this,MusicService.class);
      //三个参数
      //第一个是Intent
      //第二个是服务连接器,用于和服务的连接
      //第三个是标志位,用于开启服务的方式
      //BIND_AUTO_CREATE表示绑定时自动连接
      bindService(_Intent,
      conn, 
      BIND_AUTO_CREATE);
    }
    
    @Override
    protected void onDestroy() {
      unbindService(conn);
      super.onDestroy();
    }
}
-----------------------------------------------
musicService.java
package com.tarena.Music;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;

public class MusicService extends Service {
private MediaPlayer mMediaPlayer;
@Override
public IBinder onBind(Intent intent) {
mMediaPlayer= MediaPlayer.create(this, R.raw.hetang);
Log.i("MyLog","服务已绑定");
return new MyBinder();
}
/**
 * 封装连接服务的钥匙类
 * 这个类的功能就是把服务类暴露给外部使用。
 
 * @author Administrator
 *
 */
class MyBinder extends Binder{
/**
 * @return将服务本身这个实例返回
 */
public MusicService getKey(){
return MusicService.this;
}
}
/**
 * 音乐开始
 */
public void start(){
if (!mMediaPlayer.isPlaying()) {
Log.i("MyLog","music start");
mMediaPlayer.start();
}
}
//暂停
//停止

}

--------------------------------------
main.xml
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@drawable/background">
    
   
    android:id="@+id/initImage"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/init"  
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"/>
    
    
       
        android:id="@+id/music_listview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" 
        android:layout_marginBottom="70dp"
        android:layout_below="@id/initImage"
        >
     
         

       
        android:id="@+id/SeekBar1"       
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/linearLayout"/>

   
           android:id="@+id/linearLayout"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:orientation="horizontal" 
           android:layout_alignParentBottom="true"
           android:gravity="bottom"
           android:layout_marginLeft="54dp"
           android:layout_marginRight="48dp"
           android:layout_marginBottom="4dp"
           >
     
android:id="@+id/prev"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/prev"  
    android:gravity="left"
    android:layout_marginRight="40dp"/>
   
    android:id="@+id/pause"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/pause"  
    android:layout_marginRight="40dp"/>
      
   
    android:id="@+id/next"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/next"  
android:gravity="right"
android:layout_gravity="right"/>
           
       

 


你可能感兴趣的:(android实习程序——音乐播放器(简单播放))