- 浏览: 385264 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (269)
- FY_UML (3)
- FY_JAVA (12)
- FY_JavaScript脚本 (7)
- FY_JSP (3)
- FY_Tapestry框架 (12)
- FY_Spring框架 (3)
- FY_Manager (5)
- FY_Junit(单元测试) (3)
- SERVER (14)
- FY_Struts2框架 (3)
- FY_SVN (2)
- FY_NoSQL (2)
- FY_jquery_sir (13)
- FY_hibernate_sir (8)
- FY_设计模式_sir (6)
- FY_Extjs_sir (10)
- FY_CI_sir (5)
- FY_Oracle_sir (11)
- FY_MySql_sir (10)
- FY_Hadoop_sir (3)
- FY_SOA_sir (1)
- 中文分词技术 (1)
- FY_Android (52)
- FY_架构 (2)
- FY_PhoneGap (2)
- FY_Webstorm (5)
- FY_Sencha Touch (3)
- HTML5应用快速开发 (1)
- FY_python (0)
- HADOOP (1)
- AI (0)
最新评论
-
antao592:
楼主,HkDataSourceWrapper中的getCurr ...
结合spring jdbc 实现分表分库的数据库访问构思 -
bonait:
不错,看看我的这个怎么样www.zipin168.com
So Easy京东商城 -
chenzheng8975:
...
So Easy京东商城 -
yzhenxing:
我导入demo后少com.google.android.gms ...
google地图demo -
echoaiya:
非常感谢~~
google地图demo
--------------------------------------------AndroidManifest.xml---------------------------------
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.ch28"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<!-- 网络访问权限 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- sdcard权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
--------------------------------------------activity_main.xml------------------------------------
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/btn"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="download" />
<ProgressBar
android:id="@+id/pbar"
android:layout_width="fill_parent"
android:layout_height="wrap_content" style="?android:attr/progressBarStyleHorizontal"/>
</LinearLayout>
--------------------------------------------MainActivity.java-------------------------------------
package com.ch28;
import java.io.File;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
/**
*
* 项目名称:com.ch28
* 类名称:MainActivity
* 类描述:断点下载
* 创建人:方勇
* 创建时间:2012-12-7 下午4:49:39
* Copyright (c) 方勇-版权所有
*/
public class MainActivity extends Activity implements OnClickListener {
private Button btn;
private ProgressBar pbar;
/* 文件总大小 */
private int fileSize;
/* 已下载大小 */
private int downloadsize;
/* 文件存放路径 */
private String path;
/* 更新进度条的值 */
private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
pbar.setProgress(Double.valueOf(downloadsize * 1.0 / fileSize * 100).intValue());
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViews();
setListeners();
initdata();
}
private void findViews() {
btn = (Button) findViewById(R.id.btn);
pbar = (ProgressBar) findViewById(R.id.pbar);
}
private void setListeners() {
btn.setOnClickListener(this);
}
private void initdata() {
pbar.setVisibility(View.GONE);
pbar.setMax(100);
pbar.setProgress(0);
}
@Override
public void onClick(View v) {
/* 获取SDcard */
path = Environment.getExternalStorageDirectory() + "/downloads/";
File file = new File(path);
if (!file.exists()) {
file.mkdir();
}
/* 下载操作 */
new Thread(new DownLoadTask()).start();
/* 显示进度条 */
pbar.setVisibility(View.VISIBLE);
}
/* 子线程,计算下载量,更新UI */
class DownLoadTask implements Runnable {
/* 线程块大小,每个线程的下载量 */
private int blocksize;
/* 默认为5个线程 */
private int threadNum = 5;
/* 下载后的文件名 */
private String filename = "apache.zip";
@Override
public void run() {
/*数组保存线程对象,便于后面的每个线程下载量计算总和*/
FileDownLoad[] fileDownLoads = new FileDownLoad[threadNum];
/* 计算总大小 */
URL url;
try {
url = new URL("http://172.16.121.220:8080/download/apache.zip");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
/* 计算下载量 */
fileSize = conn.getContentLength();
/* 计算每个线程的下载量 */
blocksize = fileSize / threadNum;
/* 执行下载操作 */
for (int i = 0; i < threadNum; i++) {
/* 每个线程的开始位置 */
int begin = i * blocksize;
/* 每个线程的结束位置 */
int end = (i + 1) * blocksize - 1;
FileDownLoad thread = new FileDownLoad(url, begin, end, path + filename);
thread.start();
fileDownLoads[i] = thread;
}
/* 更新UI */
boolean flag = false;
while (!flag) {
flag = true;
for (int i = 0; i < threadNum; i++) {
downloadsize += fileDownLoads[i].getDownloadsize();
if (!fileDownLoads[i].isFinish()) {
flag = false;
}
}
MainActivity.this.handler.sendEmptyMessage(0);
Thread.sleep(1000);
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
--------------------------------------------FileDownLoad.java-----------------------------------
package com.ch28;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.net.URL;
import java.net.URLConnection;
/*下载线程*/
public class FileDownLoad extends Thread {
private URL url;
private int begin;
private int end;
private int current;
private String filename;
/*缓冲输入流*/
private BufferedInputStream buffin;
/*写入流,支持断点*/
private RandomAccessFile raf;
/*缓冲大小*/
byte[] buffsize = new byte[1024];
/*已经下载大小*/
private int downloadsize;
private boolean isFinish;
public int getDownloadsize() {
return downloadsize;
}
public boolean isFinish() {
return isFinish;
}
public FileDownLoad(URL url, int begin, int end, String filename) {
super();
this.url = url;
this.begin = begin;
this.end = end;
this.filename = filename;
}
@Override
public void run() {
try {
URLConnection conn = url.openConnection();
/*指定下载的范围*/
conn.setRequestProperty("Range", "bytes="+begin+"-"+end);
conn.setAllowUserInteraction(true);
/*做缓冲优化处理*/
buffin = new BufferedInputStream(conn.getInputStream());
/*写入本地文件*/
raf = new RandomAccessFile(new File(filename), "rw");
/*移动到新的位置*/
raf.seek(begin);
while(current<end){
int size = buffin.read(buffsize, 0, 1024);
/*已经读完*/
if(size==-1){
break;
}
raf.write(buffsize, 0, size);
current+=size;
/*下载量*/
downloadsize+=size;
}
isFinish = true;
/*关闭输入流与写入流*/
buffin.close();
raf.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
super.run();
}
}
--------------------------------------------效果---------------------------------------------------
<!--EndFragment-->
发表评论
-
史上最快 Android N(安卓7.0)运行效率暴增至600%
2016-10-15 10:08 928谷歌I/O 2016开发者大会在公司总部正式拉开 ... -
So Easy京东商城
2014-12-10 16:51 1578So Easy京东商城 我和17位小伙伴们 ... -
过期Gallery取代方案horizontalscrollView之菜单导航效果
2014-03-23 16:19 2413效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之京东效果
2014-03-23 15:57 3880效果 ------------------------- ... -
过期Gallery取代方案horizontalscrollView之幻灯片效果
2014-03-21 17:33 2621效果 ------------------------- ... -
tabhostandbadgeview
2014-03-19 13:45 1034效果 -------------------------- ... -
Android优秀开源项目大全
2014-03-18 15:17 1983以下是开源项目 1、and ... -
Android分页控件xlistview
2014-03-18 14:51 1673strings.xml ----------------- ... -
过期Gallery取代方案horizontalscrollView之普通画廊
2014-03-17 22:48 2442activity_main.xml ---------- ... -
viewpage
2014-03-17 18:08 1059strings.xml ----------------- ... -
FragmentStatePagerAdapter分页
2014-03-17 17:27 806ViewPager ViewPager 如 ... -
FragmentPagerAdapter与FragmentStatePagerAdapter差异
2014-03-17 17:20 1317简介 平常使用的FragmentPagerAdapter和F ... -
抽屉菜单
2014-03-16 12:51 1843strings.xml ----------------- ... -
px和dip以及sp的区别
2014-03-08 17:01 717显示单位px和dip以及sp的区别 dip: devi ... -
fragment生命周期
2014-03-06 16:59 890Fragment必须被写成可重用的模块。因为fragmen ... -
过期API_AlertDialog
2014-03-02 10:07 1151layout----------------------- ... -
Android_Jni 操作指南
2014-01-10 14:45 948Android_Jni 操作指南 NDK(Nati ... -
各种各样圆形进度条
2013-11-11 16:30 563http://www.apkbus.com/android-1 ... -
红杏出墙__实训版
2013-04-20 18:59 1082红杏出墙__实训版 -
google地图demo
2013-04-09 14:25 3202---------------------------- ...
相关推荐
请注意,这只是一个基础的实现,实际应用中可能需要考虑更多细节,如错误处理、网络中断后的重试机制、验证服务器返回的`Accept-Ranges`头来确保支持断点续传,以及更精确的进度跟踪等。 在使用此类时,首先实例化`...
标题中的"CH341SER_ANDROID.ZIP_340手机驱动_CH341SER_ANDROID_CH34xUARTDemo_ch34"表明这是一个与CH341系列USB转UART(通用异步收发传输器)驱动相关的压缩包,主要用于Android设备。其中"340手机驱动"指的是该驱动...
CH341SER_ANDROID(CH34XUARTDriver.jar),配有CH34X系列芯片串口Android程序开发文档,如何使用芯片的 USB 转异步串口功能(以下简称 CH34XUART)以及 GPIO 功能,以及 Android 下如何使用 APK 操作实现串口通讯。...
《Android CH34xUARTDemo: USB Host OTG 转口模块详解》 在现代移动设备中,Android操作系统以其开放性和灵活性深受开发者喜爱。在Android系统中,USB Host功能允许设备连接并控制其他USB设备,如键盘、鼠标或者...
本实例探讨了如何使用CH559 USB单片机实现与Android设备的通讯,利用Android Open Accessory Protocol 2.0 (AOA 2.0) 协议进行数据交换。这一技术允许开发人员创建兼容Android系统的外部硬件设备,从而拓展手机或...
安卓接CH340实现串口通信源码,可设置波特率等参数
本资源“android 串口通信转usb的jar包CH34xUARTDriver.zip”提供了一个解决此问题的解决方案,它包含了实现Android设备通过USB接口与采用CH34x系列芯片(如CH340、CH341)的串口设备进行通信的Java库。 CH34x系列...
"CH341 Android代码"这个标题暗示了我们即将探讨的是与Android应用程序开发相关的源代码,可能是一个项目、一个库或者一个工具的实现。在这个场景中,CH341可能是项目代号或者是某个硬件接口(如CH341芯片,常用于...
在Android平台上进行CH34x芯片的USB通信是嵌入式开发中的常见任务,尤其对于需要与硬件设备交互的应用来说。CH34x系列芯片是由韦尔奇科技(Wch Chip)开发的一组USB到串口控制器,广泛用于USB转串口适配器,使得通过...
本示例“安卓系统USB转串口_CH340驱动小Demo”聚焦于如何利用CH340芯片在Android设备上实现这一功能。CH340是一款广泛使用的通用串行总线(USB)到串行接口转换器,它允许我们将标准的串行通信接口(如RS-232)与USB...
ch函数间断点及其分类PPT课件.pptx
ch函数间断点及其分类学习教案.pptx
标题 "CH341SER_ANDROID[官方demo].zip" 暗示了这是一个与CH341SER设备驱动相关的Android应用程序的官方演示示例。CH341SER是一款USB到串口控制器,常用于电子爱好者和开发者的项目中,如Arduino和其他微控制器的...
标题中的“CH341 serial for android”指的是一个专为Android设备设计的驱动程序或应用程序,它使得用户能够在具有OTG(On-The-Go)功能的Android手机或平板电脑上使用CH341系列USB转串口模块。CH341系列芯片是由...
在这种情况下,"Android CH34X串口转USB.zip"是一个关键资源,它包含了一个解决方案,允许开发者通过Android设备连接并控制使用CH341芯片的串口转USB设备。CH341芯片是一种常用的接口转换器,能够将串行通信接口(如...
本章"ch05 Android布局"着重探讨如何有效地设计和管理Android应用的用户界面,包括基本布局管理器、自定义布局以及性能优化策略。 一、基础布局管理器 Android提供了多种内置的布局管理器,如线性布局...
测试有效的OTG-安卓驱动 CH340G,CH340T,CH340C,CH340N, CH340K, CH340E,CH340B,CH341A,CH341F, CH341T,CH341B,CH341C,CH341U CH340/CH341的USB转串口安卓免驱应用库,用于Android操作系统3.1及以上版本的...
该资源包含CH03至CH05章节的源码,为开发者提供了丰富的学习素材,旨在帮助他们更好地理解和掌握Android SDK的各种功能和特性。 CH03章节通常会涵盖Android应用的基本架构和组件,例如Activity、Intent、Service、...
《Android SDK开发范例大全(第二版)CH05》是针对Android应用开发的一份重要资源,由清华大学出版社出版。这个压缩包包含了第五章的源代码,为开发者提供了丰富的实践示例,帮助深入理解Android SDK的使用。在这个...
在这个演示项目中,我们将展示如何使用STM32G030微控制器与CH395以太网控制芯片结合,实现一个以太网串口透传的功能。这个项目不仅展示了STM32G030强大的处理能力和丰富的外设接口,还突显了CH395以太网控制芯片的...