實現(xiàn)過程粥血,首先創(chuàng)建一個Service,將service綁定到MainActivity,在選擇完文件之后酿箭,用fresco框架加載圖片复亏,就可以進行上傳操作,上傳過程是先獲取文件大小缭嫡,規(guī)定一次上傳多少個字節(jié)(本文模擬實現(xiàn)上傳)缔御,并在通知欄顯示。
#### 獲取本地文件大小
inputStream.available()獲取輸入流的大小
通知欄更新部分代碼
private void notifyMsg(String title,String content) {
if(finishLength>=fileLength) {
progress=100;
}else{
progress= (int) (finishLength*100/fileLength);
}
mBuilder=newNotificationCompat.Builder(this);//為了向下兼容妇蛀,這里采用了v7包下的NotificationCompat來構(gòu)造
mBuilder.setSmallIcon(R.mipmap.ic_launcher_round).setLargeIcon(BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher)).setContentTitle(title);
if(progress>=0&&progress<100) {
//下載進行中
mBuilder.setContentText(content);
mBuilder.setProgress(100,progress, false);
}else{
mBuilder.setContentText("文件上傳成功");
//? ? ? ? ? ? mBuilder.setContentIntent();通知意圖點擊操作
mBuilder.setProgress(0,0, false);
}
mBuilder.setAutoCancel(true);
mBuilder.setWhen(System.currentTimeMillis());
mNotification=mBuilder.build();
mNotificationManager.notify(0,mNotification);
}
布局:activity_main.xml
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:fresco="http://schemas.android.com/apk/res-auto"
tools:context="com.sky.servicetest.MainActivity">
android:id="@+id/image"
android:padding="20dp"
fresco:actualImageScaleType="focusCrop"
android:layout_width="match_parent"
android:layout_height="350dp"/>
android:id="@+id/upload_file"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:text="文件上傳"/>
android:id="@+id/choose_file"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@id/upload_file"
android:text="選擇文件"/>
綁定service上傳文件:
public voiduploadFile(){
if(filePath==null){
Toast.makeText(this,"未選擇文件",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(this,"開始上傳",Toast.LENGTH_SHORT).show();
intent=newIntent(this,UploadService.class);
conn=newMyConnection();
bindService(intent,conn,BIND_AUTO_CREATE);
}
}
大致過程是這樣的耕突,效果圖如下:
第一次寫簡書沒什么經(jīng)驗,有不足之處請多多指出,之后會完善采取文件分塊分片的方式實現(xiàn)文件上傳下載功能评架,并添加服務(wù)器代碼眷茁。
完整項目路徑:Github