随手记(四)

SubmitDataService.java
private Vibrator vibrator;

boolean finishflag = false;
//数据库
private MySQLiteHelper mMysql;
private SQLiteDatabase mDataBase;
IBinder myBinder = new MyBinder();

class MyBinder extends Binder {
    public Service getService() {
        return SubmitDataService.this;
    }
}

@Override
public IBinder onBind(Intent intent) {
    return myBinder;
}

public boolean getfinishflag() {
    return finishflag;
}

//第一次开始的时候执行,或者关闭服务后执行
@Override
public void onCreate() {
    super.onCreate();

// Log.d(TAG, "onCreate() executed");
}

// 每次开启服务都会执行,重新开启服务都会执行
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    new Thread(new Runnable() {
        @Override
        public void run() {
            // 开始执行后台任务
            SubmitData();
        }
    }).start();

    return super.onStartCommand(intent, flags, startId);
}

//销毁服务
public void onDestroy() {
    super.onDestroy();
}

public void SubmitData() {
    mMysql = new MySQLiteHelper(this, "finance.db", null, 1);
    mDataBase = mMysql.getReadableDatabase();

    Cursor cursor = mDataBase.rawQuery("select * from finance", null);
    cursor.moveToFirst();
    int columnsSize = cursor.getColumnCount();
    int number = 0;
    while (number < cursor.getCount()) {
        String budget = cursor.getString(cursor.getColumnIndex("Budget"));
        int ID = cursor.getInt(cursor.getColumnIndex("ID"));
        Double Fee = cursor.getDouble(cursor.getColumnIndex("Fee"));
        String Time = cursor.getString(cursor.getColumnIndex("Time"));
        String Remarks = cursor.getString(cursor.getColumnIndex("Remarks"));
        String Type = cursor.getString(cursor.getColumnIndex("Type"));
        String xml = CreateXml(ID, Type, Fee, Time, Remarks, budget);
        SubmitRequest(xml);
        cursor.moveToNext();
        number++;
    }
    cursor.close();
    mDataBase.close();
    mMysql.close();
    //消息通知栏
    //定义NotificationManager
    NotificationManager mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    //定义通知栏展现的内容信息
    int icon = R.drawable.back;
    CharSequence tickerText = "通知栏";
    long when = System.currentTimeMillis();
    Notification notification = new Notification(icon, tickerText, when);

    //定义下拉通知栏时要展现的内容信息
    Context context = getApplicationContext();
    CharSequence contentTitle = "已经完成同步";
    CharSequence contentText = "进入程序查看详情";

    Intent notificationIntent = new Intent(this, MainActivity.class);
    PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
            notificationIntent, 0);
    //notification.setLatestEventInfo(context, contentTitle, contentText,contentIntent);
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
    mBuilder.setContentTitle(contentTitle)//设置通知栏标题
            .setContentText(contentText)
            .setContentIntent(contentIntent);

    //用mNotificationManager的notify方法通知用户生成标题栏消息通知
    mNotificationManager.notify(1, notification);

    vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    long[] pattern = {100, 400, 100, 400};   // 停止 开启 停止 开启
    vibrator.vibrate(pattern, -1);
}


public String CreateXml(int ID, String Type, double Fee, String Time, String Remarks, String Budget) {

    String xml = "<?xml version='1.0' encoding='UTF-8'?>"
            + "<Data>"
            + "<ID>" + ID + "</ID>"
            + "<Type>" + Type + "</Type>"
            + "<Fee>" + Fee + "</Fee>"
            + "<Time>" + Time + "</Time>"
            + "<Remarks>" + Remarks + "</Remarks>"
            + "<Budget>" + Budget + "</Budget>"
            + "</Data>";
    return xml;
}

//执行功能的函数
public void SubmitRequest(String xml) {
    try {
        // 创建url资源
        URL url = new URL("http://119.29.85.118//finance.php");
        // 建立http连接
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        // 设置允许输出
        conn.setDoOutput(true);

        conn.setDoInput(true);

        // 设置不用缓存
        conn.setUseCaches(false);
        // 设置传递方式
        conn.setRequestMethod("POST");
        // 设置维持长连接
        conn.setRequestProperty("Connection", "Keep-Alive");
        // 设置文件字符集:
        conn.setRequestProperty("Charset", "UTF-8");
        //转换为字节数组
        byte[] data = xml.getBytes();
        // 设置文件长度
        conn.setRequestProperty("Content-Length", String.valueOf(data.length));
        // 设置文件类型:
        conn.setRequestProperty("contentType", "text/xml");
        // 开始连接请求
        conn.connect();
        OutputStream out = conn.getOutputStream();
        // 写入请求的字符串
        out.write(data);
        out.flush();
        out.close();

        System.out.println(conn.getResponseCode());

        // 请求返回的状态
        if (conn.getResponseCode() == 200) {
            System.out.println("连接成功");
            // 请求返回的数据
            InputStream in = conn.getInputStream();
            String a = null;
            try {
                byte[] data1 = new byte[in.available()];
                in.read(data1);
                // 转成字符串
                a = new String(data1);
                System.out.println(a);
            } catch (Exception e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        } else {
            System.out.println("no++");
        }
        finishflag = true;

    } catch (Exception e) {
        finishflag = false;
    }
}
原文地址:https://www.cnblogs.com/liqinsqzr/p/7007281.html