ProgressService下载图片
来源:互联网 发布:申请淘宝网店要多少钱 编辑:程序博客网 时间:2024/06/06 13:24
清单文件
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.bw.alice.servicestartprogress"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN"/> <category android:name="android.intent.category.LAUNCHER"/> </intent-filter> </activity> <service android:name=".ProgressService"/> </application></manifest>
MainActivity
import android.app.ProgressDialog;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;public class MainActivity extends AppCompatActivity { private ProgressDialog dialog; private ProgressReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 注册广播 register(); // 初始化 Dialog initDialog(); } // 注册广播 private void register() { receiver = new ProgressReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("com.phone.day22.progress"); registerReceiver(receiver, filter); } private void initDialog() { dialog = new ProgressDialog(this); dialog.setIcon(R.mipmap.ic_launcher); dialog.setTitle("提示"); dialog.setMessage("图片正在下载中。。。"); dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); dialog.setMax(100); dialog.setIndeterminate(false); } public void onClick(View view) { dialog.show(); // 开启服务 startService(new Intent(this, ProgressService.class)); } class ProgressReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { int progress = intent.getIntExtra("progress", 0); // 接收下载进度 并更新dialog dialog.setProgress(progress); if (progress == 100) { dialog.dismiss(); } } } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); // 注销广播 unregisterReceiver(receiver); }}
ProgressService
import android.app.Service;import android.content.Intent;import android.os.Environment;import android.os.IBinder;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;public class ProgressService extends Service { private String path = "http://att2.citysbs.com/suzhou/2011/12/27/09/middle_095806_kuokioik_0afeb16ab6cdd89b4d3b8cf7f0ccda32.jpg"; private String filePath = ""; private String file_name = "xrk.jpg"; private int total_lenth; private int current; @Override public IBinder onBind(Intent intent) { // TODO Auto-generated method stub return null; } @Override public void onCreate() { super.onCreate(); // 初始化下载地址 if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) { filePath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + File.separator + file_name; } } @Override public int onStartCommand(Intent intent, int flags, int startId) { new Thread() { public void run() { HttpURLConnection conn = null; BufferedInputStream inputStream = null; BufferedOutputStream outputStream = null; try { outputStream = new BufferedOutputStream(new FileOutputStream(filePath)); URL url = new URL(path); conn = (HttpURLConnection) url.openConnection(); conn.setConnectTimeout(5 * 1000); conn.setReadTimeout(5 * 1000); inputStream = new BufferedInputStream(conn.getInputStream()); // 总长度 total_lenth = conn.getContentLength(); byte[] bytes = new byte[1024]; int line; Intent intent = new Intent(); // 定义一个广播 intent.setAction("com.phone.day22.progress"); while ((line = inputStream.read(bytes)) != -1) { current += line; outputStream.write(bytes, 0, line); outputStream.flush(); int progress = (int) ((float) current / (float) total_lenth * 100); intent.putExtra("progress", progress); // 发送广播 sendBroadcast(intent); } } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { if (inputStream != null) { try { inputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (outputStream != null) { try { outputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (conn != null) { conn.disconnect(); } } }; }.start(); return super.onStartCommand(intent, flags, startId); } @Override public void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); }}
activity_main
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.bw.alice.servicestartprogress.MainActivity"> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginTop="18dp" android:onClick="onClick" android:text="开始下载" /></RelativeLayout>
阅读全文
0 0
- ProgressService下载图片
- 下载图片
- 下载图片
- 下载图片
- 下载图片
- 下载图片,下载文件
- 图片自动下载机
- 下载网页中的图片
- 远程下载图片!
- [学习]J2ME下载图片
- 下载图片并保存
- asp.net下载图片``
- 下载显示图片
- 下载二进制图片代码
- 利用urllib下载图片
- 利用HttpClient下载图片
- 图片显示+文件下载
- 下载网页图片
- 坐标转移
- 嵌入式技术的就业前景
- 用java+selenium启动chrome浏览器时报错Exception in thread "main" org.openqa.selenium.NoSuchSession
- 八(1) 5
- 自定义view画圆
- ProgressService下载图片
- SDUT-1273 面向对象程序设计上机练习十一(运算符重载)
- Idea创建web项目
- Linux作业二
- Android SqlLite的简单实用
- 自考总结-2017.10
- tiaozhuanyemian
- 一些基本的依赖
- NSetup 轻松一键,部署NSIS美化打包安装和自动增量升级 (包含 nsSkinEngine)