教材类新媒体扩展阅读移动端

 2022-01-17 11:01

论文总字数:29253字

目 录

第三步,打开project Structure... 观察类库目录,在弹出一个对话中,我们选择右上角的”Dependcies“就可以看到下面我们添加的第三方类库了[18]。同时记得在app的配置文件中对类库进行加载:

图5-4 项目导入

最后在二维码扫描模块对二维码扫描功能进行实现:

public void onClick(View v) {

// 调用ZXIng开源项目源码 扫描二维码

Intent openCameraIntent=new Intent(GenerateCode.this,CaptureActivity.class);

startActivityForResult(openCameraIntent,0);

}

直接调用zxing准备好的activty以及二维码扫描算法来实现从二维码中获取视频地址。同时通过重写onActivityResult方法来进行跳转,并且传递视频的地址,代码如下:

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if(resultCode== RESULT_OK){

Bundle bundle= data.getExtras();

String scanResult=bundle.getString("result");

Intent intentPath=new Intent();

intentPath.setClass(GenerateCode.this,MainActivity.class);

Bundle bundlePath=new Bundle();

bundlePath.putString("path",scanResult);

intentPath.putExtras(bundlePath);

GenerateCode.this.startActivity(intentPath);

}

}

5.2.5 异步加载获取视频封面

异步加载,就是在不影响主线程运行的情况下,进行信息下载和录入等操作,在开发应用时,我们常常需要从远程网络中载入一些图像甚至视频文件,但是主线程,尤其是界面显示是不可能等待这些数据完全下载完成再显示的。移动设备通常有有限等待机制,当一个应用程序长时间不进行下一步操作,就默认这个应用程序进入无法运行的死循环中。而异步加载就是为了解决这一问题而存在的。而且在高版本的sdk中规定,主线程不能执行网络连接的操作,而一些布局空间的处理又无法在普通的子线程中使用,除了handler之外,就没有办法处理了。而异步加载就是建立在handler至少进行进一步的完善。

此处使用异步加载来加载封面图,由于加载的时间较长,程序不可能因为图片而等待不显示主界面,所以使用异步加载的方式,让界面的显示与加载图片的过程分离。

class DownLoadTask extends AsyncTasklt;Void,Integer,Booleangt; {

Bitmap fm;

//获取网络视频第一帧

createVideoThumbnail(String url, int width, int height) ;

//检测SD卡中是否存在图片,如果没有则调用createVideoThumbnail

loadImageFromUrl(String url, String author) throws IOException {

//是否SD卡可用

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){

//查看是否有本地图片资源

String FileUrl = Environment.getExternalStorageDirectory() "/fm_pic/";

File folder = new File(FileUrl);

if(!folder.exists()){

folder.mkdir();

}

File f = new File(FileUrl author ".jpg");

//SD卡中是否有该文件,有则直接读取返回

if(f.exists()){

// FileInputStream fis = new FileInputStream(f);

// Drawable d = Drawable.createFromStream(fis, "src");

Bitmap bmap= BitmapFactory.decodeFile(FileUrl author ".jpg");

return bmap;

}

//没有的话则去连接下载,并写入到SD卡中

fm = createVideoThumbnail(url, 30, 30);

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(f));

fm.compress(Bitmap.CompressFormat.JPEG, 100, bos);

// bos.flush();

bos.close();

// Drawable d = Drawable.createFromStream(i, "src");

return loadImageFromUrl(url,author);

}

//SD卡不可用则直接加载使用

else{

fm = createVideoThumbnail(url, 30, 30);

return fm;

}

}

@Override

protected void onPreExecute() {

super.onPreExecute();

// image.setImageResource(R.mipmap.roll2);

}

@Override

protected Boolean doInBackground(Void... params) {

for (int i=0;ilt;infolist.size();i ){

try {

bitmap_pc= loadImageFromUrl("http://182.254.151.22:8080/" infolist.get(i).getAddress(),infolist.get(i).getVideoname());

infolist.get(i).setBitmap(bitmap_pc);

publishProgress();

}catch (Exception e){

Log.e("connERROR","获取失败");

return false;

}

publishProgress();

}

return true;

}

@Override

protected void onProgressUpdate(Integer... values) {

super.onProgressUpdate(values);

adpter.notifyDataSetChanged();

}

5.2.6 更新ListView内容

ListView通常被用作放置数据量较大的元素,比如qq的聊天联系人列表、短信的来信列表等等。这些数据无法一下次放置在我们的眼前,必须加载一部分,隐藏一部分。在实际运用中,每添加一个项,都需要更新一次listview,如何使用好这一控件,就必须好好考虑了。

public void upDateAdapter() {

MainActivity activity = (MainActivity) getActivity();//获得MainActivity的实例

ArrayListlt;Stringgt; names=activity.getNameList();

if(names.size()gt;0){

// mTextView.setText(names.size() "");

for (int i=0;ilt;names.size();i ){

for(int j=0;jlt;historylist.size();j ){

if(names.get(i)==historylist.get(j).getVideoname()){

剩余内容已隐藏,请支付后下载全文,论文总字数:29253字

相关图片展示:

您需要先支付 80元 才能查看全部内容!立即支付

该课题毕业论文、开题报告、外文翻译、程序设计、图纸设计等资料可联系客服协助查找;