• 23 服务IntentService Demo6


    这里写图片描述

    MainActivity.java

    package com.qf.day23_service_demo2;
    
    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    
    public class MainActivity extends Activity {
    
        private String iamgUrl = "https://ss2.baidu.com/6ONYsjip0QIZ8tyhnq/it/u=2507878052,3446525205&fm=58";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        //点击按钮  开启服务下载数据
        public void MyLoadClick(View v){
    
            Intent intent = new Intent();
            intent.setAction("com.qf.day23_service_demo2.MyLoaderService");
            intent.putExtra("imagUrl", iamgUrl);
            startService(intent);
    
        }
        //点击按钮  停止服务
        public void StopServiceClick(View v){
            Intent intent = new Intent();
            intent.setAction("com.qf.day23_service_demo2.MyLoaderService");
            stopService(intent);
    
        }
    
    
    
    }
    

    MyLoaderService.java

    package com.qf.day23_service_demo2;
    
    import com.qf.day23_service_demo2.utils.FileUtils;
    import com.qf.day23_service_demo2.utils.HttpUtils;
    
    import android.app.IntentService;
    import android.app.NotificationManager;
    import android.app.PendingIntent;
    import android.app.Service;
    import android.content.Context;
    import android.content.Intent;
    import android.os.IBinder;
    import android.support.v4.app.NotificationCompat;
    import android.util.Log;
    
    public class MyLoaderService extends IntentService {
    
        String imagUrl = "";
    
        public MyLoaderService(String name) {
            super(name);
            // TODO Auto-generated constructor stub
        }
    
        public MyLoaderService() {
            super("");
            // TODO Auto-generated constructor stub
        }
    
        // 开启了线程
        @Override
        protected void onHandleIntent(Intent intent) {
            // TODO Auto-generated method stub
            imagUrl = intent.getStringExtra("imagUrl");
            // 开启下载
    
            // 判断网络状态
            if (HttpUtils.isNetWork(MyLoaderService.this)) {
                // 开始下载
                byte[] buffer = HttpUtils.getData(imagUrl);
                // 保存在SD卡
                if (FileUtils.isConnSdCard()) {
                    // 保存到 Sd卡
                    boolean flag = FileUtils.writeToSdcard(buffer, imagUrl);
                    if (flag) {
                        Log.e("AAA", "下载完成");
                        // 发送广播
                        sendNotification();
                        // 服务自己关闭服务
                        stopSelf();
                    }
    
                } else {
                    Log.e("AAA", "Sd卡不可用");
                }
    
            } else {
                Log.e("AAA", "网络异常");
            }
    
        }
    
        // 发送广播
        public void sendNotification() {
    
            // 要传递的图片名称
            imagUrl = imagUrl.substring(imagUrl.lastIndexOf("/") + 1);
    
            NotificationCompat.Builder builder = new NotificationCompat.Builder(
                    getApplicationContext());
            builder.setContentTitle("下载美女图");
            builder.setContentText("景甜");
            builder.setSmallIcon(R.drawable.ic_launcher);
    
            Intent intent = new Intent(MyLoaderService.this, SecondActivity.class);
            intent.putExtra("imagUrl", imagUrl);
            PendingIntent pendingIntent = PendingIntent.getActivity(
                    getApplicationContext(), 100, intent,
                    PendingIntent.FLAG_ONE_SHOT);
            builder.setContentIntent(pendingIntent);
    
            NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
            manager.notify(1, builder.build());
        }
    
    }
    

    SecondActivity.java

    package com.qf.day23_service_demo2;
    
    import java.io.File;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.Bundle;
    import android.os.Environment;
    import android.widget.ImageView;
    
    public class SecondActivity extends Activity {
    
        private ImageView iv;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.layout);
            iv = (ImageView) findViewById(R.id.iv);
    
            String imagUrl = getIntent().getStringExtra("imagUrl");
    
            File file = new File(Environment.
                    getExternalStoragePublicDirectory(
                            Environment.DIRECTORY_DOWNLOADS), imagUrl);
    
            String pathName = file.getAbsolutePath();
    
            Bitmap bp = BitmapFactory.decodeFile(pathName);
    
            iv.setImageBitmap(bp);
        }
    
    }
    

    FileUtils.java

    package com.qf.day23_service_demo2.utils;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    import android.os.Environment;
    
    public class FileUtils {
    
        /**
         * 判断sdCard是否挂载
         * @return
         */
        public static boolean isConnSdCard(){
            if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
                return true;
            }
            return false;
        }
        /**
         * 将图片的字节数组保存到  sd卡上
         * @return
         */
        public static boolean writeToSdcard(byte[] buffer ,String imagName){
            FileOutputStream outputStream =null;
    
            boolean flag = false;
    
            String fileName = imagName.substring(imagName.lastIndexOf("/")+1);
            File file = new File(Environment.
                    getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),
                    fileName);
            try {
    
                outputStream = new FileOutputStream(file);
                outputStream.write(buffer);
                flag = true;
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
                if(outputStream!=null){
                    try {
                        outputStream.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            }
    
            return flag;
    
        }
    
    }
    

    HttpUtils.java

    package com.qf.day23_service_demo2.utils;
    
    import java.io.ByteArrayOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    
    import org.apache.http.HttpResponse;
    import org.apache.http.client.ClientProtocolException;
    import org.apache.http.client.HttpClient;
    import org.apache.http.client.methods.HttpGet;
    import org.apache.http.impl.client.DefaultHttpClient;
    
    import android.content.Context;
    import android.net.ConnectivityManager;
    import android.net.NetworkInfo;
    
    public class HttpUtils {
        /**
         * 判断是否有网络
         * @param context
         * @return
         */
        public static boolean isNetWork(Context context){
            //得到网络的管理者
            ConnectivityManager manager = (ConnectivityManager) 
                    context.getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo info = manager.getActiveNetworkInfo();
    
            if(info!=null){
                return true;
    
            }else{
                return false;
            }
    
        }
    
    
        /**
         * 获取数据
         * @param path
         * @return
         */
        public static byte[] getData(String path) {
            HttpClient httpClient = new DefaultHttpClient();
            HttpGet httpGet = new HttpGet(path);
            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
            try {
                HttpResponse response = httpClient.execute(httpGet);
                if (response.getStatusLine().getStatusCode() == 200) {
                    InputStream inputStream = response.getEntity().getContent();
                    byte[] buffer = new byte[1024];
                    int temp = 0;
                    while ((temp = inputStream.read(buffer)) != -1) {
                        outputStream.write(buffer, 0, temp);
                        outputStream.flush();
                    }
    
                }
                return outputStream.toByteArray();
    
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
            return null;
    
        }
    
    }
    

    清单文件

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="com.qf.day23_service_demo2"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:minSdkVersion="8"
            android:targetSdkVersion="18" />
    
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
        <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="com.qf.day23_service_demo2.MainActivity"
                android:label="@string/app_name" >
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity android:name=".SecondActivity"></activity>
            <service android:name=".MyLoaderService">
                <intent-filter >
                    <action android:name="com.qf.day23_service_demo2.MyLoaderService"/>
                </intent-filter>
            </service>
        </application>
    
    </manifest>
    
  • 相关阅读:
    angularIO 路由守卫
    vue-property-decorator用法
    windows mysql 忘记密码
    OSPF 做负载均衡
    NLB 部署网络负载平衡
    flexible.js 布局详解
    python setup.py 构建
    python Zope.interface安装使用
    lnmp菜单
    linux下的文件删除原理
  • 原文地址:https://www.cnblogs.com/muyuge/p/6152182.html
Copyright © 2020-2023  润新知