`
fxrz12
  • 浏览: 25211 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用x5cloud云平台来做网络彩讯-------------文件上传下载进度条使用(八)

阅读更多

进度条是一个很头疼的问题,当然弄明白了也很好理解,用起来也很方便,大都会涉及到两个,一个是圆形,另外一个则是长方形,一点一点推进的

对于圆形比较简单,先说说长方形的原理:

       首先需要获取文件大小,在循环写的时候就进行加减乘法运算,哈哈,就这么简单!

给个例子吧:

public class Android_X5_SOSO_9_9_2Activity extends Activity {
    /** Called when the activity is first created. */
	ProgressBar pb;
	TextView tv;
	int   fileSize;
	int   downLoadFileSize;
	String fileEx,fileNa,filename;
	private Handler handler = new Handler()
	  {
	    @Override
	    public void handleMessage(Message msg)
	    {//定义一个Handler,用于处理下载线程与UI间通讯
	      if (!Thread.currentThread().isInterrupted())
	      {
	        switch (msg.what)
	        {
	          case 0:
	            pb.setMax(fileSize);
	          case 1:
	            pb.setProgress(downLoadFileSize);
	            int result = downLoadFileSize * 100 / fileSize;
	            tv.setText(result + "%");
	            break;
	          case 2:
	            Toast.makeText(Android_X5_SOSO_9_9_2Activity.this, "文件下载完成", 1000).show();
	            break;
 
	          case -1:
	            String error = msg.getData().getString("error");
	            Toast.makeText(Android_X5_SOSO_9_9_2Activity.this, error, 1000).show();
	            break;
	        }
	      }
	      super.handleMessage(msg);
	    }
	  };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        pb=(ProgressBar)findViewById(R.id.down_pb);
        tv=(TextView)findViewById(R.id.tv);
        new Thread(){
        	public void run(){
        		try {
        			String localpath=Environment
        			.getExternalStorageDirectory()
        			.getAbsolutePath()+"/CXSOSO/"
        			+"20110901005.3gp"; 
					down_file(localpath,"/sdcard/");
					//下载文件,参数:第一个URL,第二个存放路径
				} catch (ClientProtocolException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
        	}
        }.start();
 
 
    }
    public void down_file(String url,String path) throws IOException{
    	//下载函数   	
    	filename=url.substring(url.lastIndexOf("/") + 1);
    	//获取文件名
    	/*URL myURL = new URL(url);
    	URLConnection conn = myURL.openConnection();
    	conn.connect();*/
    	/*InputStream is = conn.getInputStream();
	    this.fileSize = conn.getContentLength();//根据响应获取文件大小
*/	    
    	File file = new File(url);  
    	DataInputStream is = new DataInputStream(new BufferedInputStream(new FileInputStream(file))); 
    	try {
			this.fileSize=read(file).length;
		} catch (Throwable e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
    	if (this.fileSize <= 0) throw new RuntimeException("无法获知文件大小 ");
	    if (is == null) throw new RuntimeException("stream is null");
	    FileOutputStream fos = new FileOutputStream(path+filename);
	    //把数据存入路径+文件名
	    byte buf[] = new byte[1024];
	    downLoadFileSize = 0;
	    sendMsg(0);
	    do
	      {
	    	//循环读取
	        int numread = is.read(buf);
	        if (numread == -1)
	        {
	          break;
	        }
	        fos.write(buf, 0, numread);
	        downLoadFileSize += numread;
 
	        sendMsg(1);//更新进度条
	      } while (true);
	    sendMsg(2);//通知下载完成
	    try
	      {
	        is.close();
	      } catch (Exception ex)
	      {
	        Log.e("tag", "error: " + ex.getMessage(), ex);
	      }
 
    }
	private void sendMsg(int flag)
	{
	    Message msg = new Message();
	    msg.what = flag;
	    handler.sendMessage(msg);
	}	 
	 public byte[] read(File myfile) throws Throwable{ 
			//定义输入流,将文件写入到fpath中
			 DataInputStream inStream = new DataInputStream(new BufferedInputStream(new FileInputStream(myfile))); 
		     byte[] data = readFile(inStream); 
//		     data.length;
		     return data; 
		} 
	    public static byte[] readFile(InputStream inStream) throws Throwable{ 
		     int len = 0; 
		     byte[] buffer = new byte[1024]; 
		     ByteArrayOutputStream outStream = new ByteArrayOutputStream(); 
		     while((len = inStream.read(buffer))!=-1){ 
		         outStream.write(buffer,0,len); 
		     } 
		     outStream.close(); 
		     return outStream.toByteArray(); 
		} 
 
}

 

0
5
分享到:
评论

相关推荐

    【机构调研】互联网服务-彩讯股份(300634)分析师会议-20240811.pdf

    【机构调研】互联网服务-彩讯股份(300634)分析师会议-20240811.pdf【机构调研】互联网服务-彩讯股份(300634)分析师会议-20240811.pdf【机构调研】互联网服务-彩讯股份(300634)分析师会议-20240811.pdf【机构调研】...

    深圳市彩讯科技有限公司-配用电大数据网级应用开发项目-商务投标文件.doc

    基于对国家大数据、云计算的未来发展的产业政策,以及技术转化应用市场前景的共识,彩讯公司与华北电力大学建立了战略合作关系,双方将针对电力行业大数据的应用和技术研究开展合作。另外,彩讯与广州中国科学院软件...

    移动信息化产品包推荐方案---烟草行业范文.doc

    - **企业彩讯**:企业版短信平台,用于发布通知、促销信息等。 - **移动办公**:包括云存储、在线协作、移动审批等功能,实现随时随地办公。 总结起来,这个移动信息化产品包推荐方案是针对烟草行业的全面信息化...

    AI Agent-基于大模型的智能体在AGI的道路上前进-调研

    - **应用软件领域**: 金山办公、泛微网络、致远互联、彩讯股份、汉得信息、新致软件等公司值得考虑。 #### 结论 AI Agent作为通向AGI的重要路径之一,正迅速发展并展现出广阔的应用前景。通过结合先进的大模型...

    300634_彩讯股份上市招股说明书.pdf

    300634_彩讯股份上市招股说明书.pdf

    彩讯矩阵控制软件v2.0.exe

    彩讯矩阵控制软件v2.0.exe

    超级好看的简历模板

    - **描述**:SpringMVC作为Spring框架的一部分,是一种基于MVC模式的轻量级Web框架,该候选人能够熟练使用它来构建Web应用程序,包括控制器的编写、视图层的管理等。 #### JQuery - **技能水平**:熟练 - **描述**...

    彩讯液晶DID拼接幕墙(2X3).pdf

    彩讯液晶DID拼接幕墙是一种广泛应用于会议室、控制中心、展示大厅等场所的显示技术产品。DID是Digital Information Display的缩写,意为数字信息显示。DID拼接幕墙是指通过多个显示单元拼接在一起,形成大面积的显示...

    国信证券-20230328-人工智能专题报告:生成式人工智能产业全梳理.pdf

    应用层建议关注:科大讯飞、金山办公、同花顺、广联达、凌志软件、彩讯股份、拓尔思、福昕软件、税友股份等。基础层建议关注海光信息、浪潮信息、景嘉微等。风险提示:AI技术商业化落地不及预期;行业竞争加剧,技术...

    彩讯55寸屏设置软件

    彩讯55寸屏设置安装注意事项: 1.非专业人事安装:安装前请先关闭防火墙(如360安全卫士,瑞星,诺盾等),等安装完并且成功启动本软件后可重新开启防火墙。 2.专业人事安装:先把防火墙拦截自动处理功能改为询问...

    民生证券-计算机行业周报:ChatGPT巨头新动态与应用新场景

    自主拥有垂直企业级数据优势的最佳落地场景—5G 消息:梦网科技、彩讯 网络等; 司法 AI:金桥信息 视频 AIGC:网达软件、万兴科技、魅视科技等 构建数据监测与梳理核心能力的网络可视化:浩瀚深度、中新赛克、恒为科 技...

    决战AI之巅,把握“科技牛”节奏-20230514-华西证券-74页.pdf

    * AI+应用:重点关注金山办公、福昕软件、同花顺、恒生电子、宇信科技、汉得信息,受益标的还包括:彩讯股份、焦点科技、润和软件、金桥信息、佳发教育、卫宁健康等。 * AI大模型:重点关注科大讯飞、拓尔思,受益...

    139邮箱信任登录

    139邮箱信任登录接口协议OpenId版本-V2.0.0是深圳市彩讯科技有限公司广州研发部为139邮箱与第三方合作商提供的一种安全登录机制。该协议的主要目标是允许用户通过他们的139邮箱账号安全地登录合作商的系统,而无需...

    【20230328】AIGC生成式人工智能产业全梳理-国信证券_80页.pdf

    "AIGC生成式人工智能产业全梳理" 生成式人工智能产业已...应用层建议关注:科大讯飞、金山办公、同花顺、广联达、凌志软件、彩讯股份、拓尔思、福昕软件、税友股份等。基础层建议关注海光信息、浪潮信息、景嘉微等。

    第三方代码

    彩讯矩阵的具体技术文档未给出,但基于行业标准,我们可以推测它同样支持RS-232通信,并且具备类似的控制功能。 #### 四、KRAMER矩阵 KRAMER矩阵是一种高端的矩阵切换器,常用于专业音频视频领域。其通信协议和...

    计算机行业:ChatGPT开启AI新纪元,AIGC投资框架梳理 20230217 -银河证券.pdf

    ChatGPT是由美国人工智能研究实验室OpenAI开发的一款人工智能技术驱动的自然语言处理工具,它基于Transformer神经网络架构,特别是GPT-3.5架构。这一技术的突破在于它能够理解和生成语言,通过学习大量语料库,...

    计算机周报:ChatGPT有望带来5G消息的业务重构-230212.pdf

    例如,梦网科技和彩讯网络等公司,可能会受益于这种模式变化,提供更加智能化、个性化的信息服务。 此外,ChatGPT的广泛应用将刺激对通用技术平台的需求,如百度、360和科大讯飞等公司将可能加速AI技术研发和应用。...

    Copilot:人工智能新兴风口,产业链核心环节梳理.docx

    在国产办公软件市场,金山办公凭借WPS等产品占据领先地位,而其他如用友网络、彩讯股份、亿联网络等也在云办公市场有所建树。彩讯股份的产品如RichMail邮件系统已集成AI能力,服务于多个大型企业。三六零通过收购...

    产业资本月度报告:2月产业资本呈净减持,3月解禁规模维持低位-0307-东莞证券-15页.pdf

    对于个体企业,如彩讯股份、越秀金控、瑞尔特、坚朗五金和白云电器等,其解禁限售股份占流通股比例较高,可能对市场造成一定影响。 综合来看,2月产业资本的净减持和3月解禁规模的低位运行,虽然短期内可能会对市场...

Global site tag (gtag.js) - Google Analytics