标签:
注册activity就是确定绝对目录。
创建搜索界面
注册activity
做界面
Edittext msearch
Listview mlv
将数据库查询的数据封装到map中
自定义适配器。???
对数据库的操作层
1. 在XXXDao.java文件中修改查询方法的返回值为List<Map<String, Object>>
2. 声明并初始化一个List<Map<String,Object>>类型的以map为单位的list
3. 声明并初始化一个Map<String,Object> map=new TreeMap<String, Object>();
4. 给map集合添加数据。
map.put("id",id);
map.put("name",name);
map.put("cuisine",cuisine);
map.put("material",material);
map.put("ingredient",ingredient);
map.put("picpath",picpath);
map.put("cookingstep",cookingstep);
map.put("videopath",videopath);
map.put("audiopath",audiopath);
5. 将map添加到list中:list.add(map);
6. 修改返回值:return list;
代码如下:
//根据条件查询——>name
publicList<Map<String,Object>> selectedByName(String name){
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
openDB();
String sql="name like‘%"+name+"%‘";
Cursor c=db.query("food",null, sql, null,null, null,null);
if(c!=null){
while (c.moveToNext()) {
int id=c.getInt(c.getColumnIndex("id"));
String name1=c.getString(c.getColumnIndex("name"));
String cuisine=c.getString(c.getColumnIndex("cuisine"));
String material=c.getString(c.getColumnIndex("material"));
String ingredient=c.getString(c.getColumnIndex("ingredient"));
String picpath=R.drawable.ic_launcher+"";
// Stringpicpath=c.getString(c.getColumnIndex("picpath"));
String cookingstep=c.getString(c.getColumnIndex("cookingstep"));
String videopath=c.getString(c.getColumnIndex("videopath"));
String audiopath=c.getString(c.getColumnIndex("audiopath"));
Map<String,Object> map=new TreeMap<String, Object>();
map.put("id",id);
map.put("name",name);
map.put("cuisine",cuisine);
map.put("material",material);
map.put("ingredient",ingredient);
map.put("picpath",picpath);
map.put("cookingstep",cookingstep);
map.put("videopath",videopath);
map.put("audiopath",audiopath);
list.add(map);
// System.out.println(id+"---"+name1);
}
}
closeDB();
return list;
}
}
实时动态检索
在SearchActivity.java文件中,
1. 声明组件,及需要的数据
private EditTextmSearch;
private ListViewmLv;
privateDao dao;
privateList<Map<String,Object>> data;
privateString[] from={"picpath","name"};
privateint []to={R.id.search_item_img,R.id.search_item_tv};
2. 在onCreate()方法中设置绑定布局。
setContentView(R.layout.activity_search);
3. 初始化组件
mSearch=(EditText)findViewById(R.id.search_edtx);
mLv=(ListView)findViewById(R.id.listView1);
data=newArrayList<Map<String,Object>>();
dao=new Dao(this);
4. 给mSearch的TextView添加addTextChangedListener()方法
onTextChanged(CharSequence s, int arg1, int arg2,int arg3){
String name=s.toString();
//获取text字符串àname中
if(name.length()>0){
data=dao.selectedByName(name);
//调用dao中的selectedByName方法通过name对SQLite进行查找,并将数据返回给data的list,map
SimpleAdapter adapter=newSimpleAdapter(SearchActivity.this,data,R.layout.search_item,from,to);
//创建adapter
mLv.setAdapter(adapter);
//给组件绑定adapter
}
ListView的单击事件
点击listview触发事件:绑定单击监听器:setOnItemClickListener,参数new OnItemClickListener,导入包,然后重写方法。
在publicvoidonItemClick(AdapterView<?> parent, View view,intposition,long id)方法中设置意图:
Intent it=newIntent(SearchActivity.this,DetailsActivity.class);
startActivity(it);
listview里的编号从0开始,和数组一致。
Toast.makeText(SearchActivity.this, position+"", Toast.LENGTH_SHORT);
多媒体:音频和视频的播放
MediaPlayer 播放音频(其实既能音频又能视频)不随着activity释放而终止。
生命周期:
Reset()方法:音乐资源重置。
Release()方法:整个mediaPlayer资源释放。
setDataSource():设置你要播放歌曲的路径。
Prepare()方法:准备状态。
Start方法:播放
Paused方法:暂停,
Stop方法:停止
给MediaPlayer组件加OnCompletionListener监听器,音乐播放完毕,释放资源
//绑定监听器:处理歌曲播放完毕的事件
player.setOnCompletionListener(newOnCompletionListener() {
@Override
publicvoid onCompletion(MediaPlayermp) {
player.reset();
}
});
给Button绑定【播放音频】功能
1. XxxActivity.java中implements OnClickListener
publicclass MainActivity extends Activityimplements OnClickListener
2. private ButtonmPlay,mPause,mStop;
3. publicvoid onClick(Viewv)
switch(v.getId()){
case R.id.play:
//绑定音频资源
break;
case R.id.pause:
break;
case R.id.stop:
break;
}
4. 初始化组件,设置点击监听器。
mPause=(Button)findViewById(R.id.pause);
mPlay=(Button) findViewById(R.id.play);
mStop=(Button) findViewById(R.id.stop);
mPause.setOnClickListener(this);
mStop.setOnClickListener(this);
mPlay.setOnClickListener(this);
5. 声明MediaPlayer变量,path路径
private MediaPlayerplayer;
private Stringpath="/mnt/sdcard/chuanqi.mp3";
6. 初始化MediaPlayer
player=new MediaPlayer();
7. 给player绑定音频资源,添加try模块——(写在OnCreate方法中)
player.setDataSource(path);,
//准备播放
player.prepare();
8. 在case中添加播放
case R.id.play:
//播放
player.start();
break;
9. 在case中添加暂停
case R.id.pause:
if(player.isPlaying()){
player.pause();
}
break;
10. 在case中添加停止,并重新加载和绑定音频资源
case R.id.stop:
if(player.isPlaying()){
player.stop();
}
player.reset();
//绑定音频资源
player.setDataSource(path);
//准备播放
player.prepare();
绑定资源库:
1. Ctrl+鼠标左键点击:Button
2. attachsource-> external location à external folder:
3. 找到本机sources文件所在地,指向路径:
path :D:/adt-bundle-windows-x86-20131030/sdk/sources
4. OK
准备音频资源:推入模拟器的sdk里,注意名字不能是中文!!!
DDMS:选中左侧启动的模拟器。
MntàSDCard->选中sdcard:选中push a file onto the device。
视频播放VideoView组件
支持播放:mp4,一般超过28M的视频播放失败,内存爆掉
创建VideoActivity.java文件
1. 声明私有变量
privateVideoViewmVideo;
private Stringpath;
private MediaControllercontroller;
2. 初始化
mVideo=(VideoView) findViewById(R.id.videoView1);
3. 绑定视频资源
//绑定视频资源
path="/mnt/sdcard/lantingxu.mp4";
mVideo.setVideoPath(path);
4. 创建媒体控制条
//创建媒体控制条
controller=newMediaController(VideoActivity.this);
5. 绑定控制条
//绑定控制条
mVideo.setMediaController(controller);
6. 播放视频
//播放视频
mVideo.start();
7. 播放完毕之后处理:交给OnCompletionListener处理
//播放完毕之后处理:交给OnCompletionListener处理
mVideo.setOnCompletionListener(new OnCompletionListener(){
@Override
publicvoidonCompletion(MediaPlayer mp) {
// TODO Auto-generated method stub
mVideo.stopPlayback();
}
});
遇到adb失去联系的情况!!!
在windows资源管理器,结束adb.exe进程树,然后重新在DDMS左边,reset adb
关于音频播放的Activity页面跳转之后返回的操作。
OnPause()方法
protectedvoid onPause() {
//TODO Auto-generatedmethod stub
super.onPause();
if(player.isPlaying()){
player.stop();
player.reset();
}
player.release();
//将mediaplay释放掉。onCreate方法,在一个actuvity的生命周期中只有一次。再次回来,进入resume生命周期,而非oncreate
}
OnResume()方法
@Override
protectedvoid onResume() {
//TODO Auto-generatedmethod stub
super.onResume();
if(player==null){
player=new MediaPlayer();
try {
//绑定音频资源
player.setDataSource(path);
//准备播放
player.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
}
}
实例代码:
publicclass AudioController {
privateMediaPlayer play;
public AudioController() {
super();
this.play = new MediaPlayer();
this.play.setOnCompletionListener(new OnCompletionListener() {
@Override
publicvoid onCompletion(MediaPlayer mp) {
play.reset();
//播放完毕将歌曲资源重置
}
});
}
publicvoid load(String path){
try {
play.setDataSource(path);
play.prepare();
} catch (IllegalArgumentException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IllegalStateException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generatedcatch block
e.printStackTrace();
}
}
//播放的控制
//播放
publicvoid play(String path){
load(path);
play.start();
}
//暂停
publicvoid pause(){
if(play.isPlaying()){
play.pause();
}
}
//停止
publicvoid stop(){
if(play.isPlaying()){
play.pause();
play.stop();
}
play.reset();
// play.release();
// play=null;
}
//退出方法:将整个mediaplay资源释放
publicvoid exit(){
play.release();
play=null;
}
}
标签:
原文地址:http://blog.csdn.net/moweiyang0214/article/details/44159595