[Android开发学习] day05

注册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.  给mSearchTextView添加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;

    }

   

}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值