1. 程式人生 > >安卓service中上傳檔案

安卓service中上傳檔案

在service中寫一個新執行緒用來上傳檔案,還沒測試通不通。先把程式碼放上來~

public class WifiService extends Service {
    public static final String WIFISERVICE_ACTION = "com.smartapp.service.WifiService";
    private static final String TAG = "WIFI_SERVICE";
    private WifiManager mWifiManager;
    private List<ScanResult> mWifiList;
    private boolean isOpen = true;
    private Handler handler;
    private Runnable runnable;

    private BroadcastReceiver batteryBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (TextUtils.equals(intent.getAction(), intent.ACTION_BATTERY_CHANGED)) {
                int currentBattery = intent.getIntExtra("level", 0);
                int totalBattery = intent.getIntExtra("scale", 1);
                Log.v(TAG, "ACTION_BATTERY_CHANGED");
                Log.v(TAG, currentBattery * 100 / totalBattery + "%");
            }
        }
    };

    @Override
    public void onCreate() {
        super.onCreate();
        mWifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);
        Log.v(TAG, String.valueOf(mWifiManager.getWifiState()));
        IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(batteryBroadcastReceiver, filter);
        openWifi();
        
        handler = new Handler();
        runnable = new Runnable() {
            @Override
            public void run() {
                startScanWifi();

                //每隔10s,掃描一次
               // handler.postDelayed(this, 10000);
            }
        };
        handler.postDelayed(runnable, 0);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        closeWifi();
        unregisterReceiver(batteryBroadcastReceiver);
        handler.removeCallbacks(runnable);
    }


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

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        return super.onStartCommand(intent, flags, startId);
    	
    }

    public void openWifi() {
        if (!mWifiManager.isWifiEnabled()) {
            mWifiManager.setWifiEnabled(true);
            isOpen = false;
        }
    }

    public void closeWifi() {
        if (mWifiManager.isWifiEnabled() && !isOpen) {
            mWifiManager.setWifiEnabled(false);
        }
    }

    public void startScanWifi() {
        Log.v(TAG, String.valueOf(System.currentTimeMillis()));
        mWifiManager.startScan();
        mWifiList = mWifiManager.getScanResults();
        Log.v(TAG, String.valueOf(System.currentTimeMillis()));
        Log.v(TAG, String.valueOf(mWifiList));
<span style="white-space:pre">	</span><span style="color:#ff9900;">//先生成一個檔案儲存在SD卡</span>
        final File file = new File(Environment.getExternalStorageDirectory().getPath()+ "/wifiList"+refFormatNowDate()+".txt");
        try {
            if (!file.exists()) {
                file.createNewFile();
            }
            RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rw");
            randomAccessFile.seek(file.length());
            randomAccessFile.writeBytes(refFormatNowDate());
            randomAccessFile.writeBytes("\r\n");
            randomAccessFile.writeBytes(String.valueOf(mWifiList));
            randomAccessFile.writeBytes("\r\n");
            randomAccessFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        <span style="color:#ff9900;">//以下是新執行緒,用http上傳檔案</span>
        Thread t = new Thread(){
        	
        	private URL url;
        	private String content;

        	private int TIME_OUT = 60 * 1000;
        	private String PREFIX = "--";
        	private String LINE_END = "\r\n";
        	private String BOUNDARY = UUID.randomUUID().toString();
        	private String TAG = "UPLOAD";
        	private String CHARSET = "utf-8";
        	public  String backMsg = "";
        	private Handler handler;
        	private BufferedReader in;
        	
        	public void run(){
        	
        	
        	

        	try {
    			url = new URL("");<span style="color:#ff9900;">//此處寫後臺url程式碼</span>

    			HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    			conn.setReadTimeout(TIME_OUT);
    			conn.setConnectTimeout(TIME_OUT);
    			conn.setRequestMethod("POST");
    			conn.setRequestProperty("Content-Type", "multipart/form-data"
    					+ ";boundary=" + BOUNDARY);
    			Log.v("yizhuang", "BOUNDARY: " + BOUNDARY);
    			// conn.setRequestProperty("accept", "*/*");
    			conn.setRequestProperty("connection", "Keep-Alive");
    			conn.setRequestProperty("user-agent",
    					"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
    			conn.setRequestProperty("Charsert", "UTF-8");
    			// conn.setUseCaches(true);
    			// System.setProperty("http.keepAlive", "false");
    			conn.setDoOutput(true);
    			conn.setDoInput(true);

    			conn.setDoOutput(true);
    			conn.setDoInput(true);

    			DataOutputStream dos = new DataOutputStream(conn.getOutputStream());
    			StringBuffer sb = new StringBuffer();
    			sb.append(PREFIX);
    			sb.append(BOUNDARY);
    			sb.append(LINE_END);
    			sb.append("Content-Disposition: form-data; name=\"" + content
    					+ "\"; filename=\"" + file.getName() + "\"" + LINE_END);
    			sb.append("Content-Type: application/octet-stream; charset="
    					+ CHARSET + LINE_END);
    			sb.append(LINE_END);
    			dos.write(sb.toString().getBytes());
    			Log.e(TAG, sb.toString());
    			InputStream is = new FileInputStream(file);<span style="color:#ff9900;">//將file上傳到後臺</span>
    			byte[] buffer = new byte[1024];
    			int len = 0;
    			while ((len = is.read(buffer)) != -1) {
    				dos.write(buffer, 0, len);
    			}
    			dos.write(LINE_END.getBytes());
    			Log.w(TAG, "dos.write pic");
    			byte[] end_data = (PREFIX + BOUNDARY + PREFIX + LINE_END)
    					.getBytes();
    			dos.write(end_data);
    			Log.w(TAG, "dos.write end data");
    			dos.flush();
    			Log.w(TAG, "flush");
    			Log.e(TAG, "request success");

    			in = new BufferedReader(
    					new InputStreamReader(conn.getInputStream()));
    			String line;
    			while ((line = in.readLine()) != null) {
    				backMsg = line;
    			}

    			if (backMsg.equals("success")) {
    				//file.delete();
    			}

    			Log.e("wifi", "reading:" + backMsg);
    			is.close();
    			dos.close();
    			in.close();

    			Message msg = new Message();
    			msg.what = 0x777;
    			msg.obj = backMsg;
    			handler.sendMessage(msg);

    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
        	}
        };
        t.start();
        
        
    }
    public String refFormatNowDate() {
    	  Date nowTime = new Date(System.currentTimeMillis());
    	  SimpleDateFormat sdFormatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    	  String retStrFormatNowDate = sdFormatter.format(nowTime);
    	  return retStrFormatNowDate;
    	}
  
}


相關推薦

service中上檔案

在service中寫一個新執行緒用來上傳檔案,還沒測試通不通。先把程式碼放上來~ public class WifiService extends Service { public static final String WIFISERVICE_ACTION = "

端上檔案與servlet伺服器接收多檔案

android端上傳檔案很簡單  用xutils提供的方法 如下: RequestParams requestParams=new RequestParams(); requestParams.addBodyParameter("video", new File(pa

應用並生成下載鏈接需要多少錢;市場上應用需要什麽

app上傳專業上架蘋果app app上架多少錢聯系QQ:2205357007 上傳應用並生成下載鏈接需要多少錢;安卓市場上傳應用需要什麽上傳應用程序到安卓分發市場時,經常需要填寫一些有關apk安裝包的信息。而作為非技術開發人員的我們同樣需要識記一下這些信息,在下載安裝包、安裝應用到手機時,都是非常有用的。目前

計步感器

ech keep tlist 有效 android get chan service href 概念及原理 計步傳感器介紹 Android KitKat has added a few more hardware sensors to it’s API list.

MediaPlayer播放asset檔案下的音樂檔案

第一種方式,通過一個物件去管理 public class PlayRam { private MediaPlayer mediaPlayer; public MediaPlayer getMediaPlayer() { return mediaPlayer;

Mac終端中上檔案到Linux伺服器

一、scp是什麼? scp是secure copy的簡寫,用於在Linux下進行遠端拷貝檔案的命令,和它類似的命令有cp,不過cp只是在本機進行拷貝不能跨伺服器,而且scp傳輸是加密的。可能會稍微影響一下速度。 二、scp有什麼用? 1、我們需要獲得遠端伺服器上的某個檔

Java中上檔案操作

package com.bootdo.nsmp.domain; import java.io.Serializable; public class Material implements Serializable{ private static final lon

MVC中上檔案

對於MVC的上傳最簡單的一種方式:通過form表單來進行獲取 控制器中 [HttpPost] public ContentResult PostDatas() { HttpPostedFileBase file = Request.Files["file"];

TP中上檔案,匯入並且下載如何實現

1.上傳檔案(方法):   public function upload(){      $upload = new \Think\Upload();// 例項化上傳類      $upload->maxSize = 0 ;// 設定附件上傳大小      $uplo

解決手機上圖片沒有拍照選項,修改後又出現的手機能載入相簿和攝像頭但蘋果手機不能載入相簿的問題

<input type="file" id="choose" accept="image/*" multiple> 上面是原始碼,下面修改後可以讓安卓手機顯示攝像頭 <inp

hal層 C 檔案中加除錯堆疊

 適用於android5.1 及以後的版本  比如要追蹤 hardware/qcom/audio/hal/audio_hw.c 中adev_set_mode() 函式的函式堆疊呼叫  1.       在

vue中上檔案遇到的問題

vue專案中會遇到上傳檔案的需求,jquery會有一些外掛很方便,如果不使用外掛網上的方法沒有太容易的而且很多是原生JS或者基於jQuery操作dom結構的。那麼在vue專案中如何實現呢,還有如何模擬

vue中上檔案相同檔名沒反應

vue專案中會遇到上傳檔案的需求,jquery會有一些外掛很方便,如果不使用外掛網上的方法沒有太容易的而且很多是原生JS或者基於jQuery操作dom結構的。那麼在vue專案中如何實現呢,還有如何模擬表單檔案提交呢? 這裡檔案上傳檔案框的樣式美化就不過多贅述了,有很多例子。只介紹一下功能的實現以及注

kotlin開發:layout檔案分類

我在layout裡面直接建立了很多二級資料夾,甚至還有三級資料夾。 不可以直接使用,因為R索引獲取不到,我們要到構建檔案裡面,加點東西。 是app的構建:加一個SourceSets配置    一定注意:最下面是main/res   res/layout  上面的

Service生命週期,你應該知道的都在這裡

如有轉載,請申明: Service是安卓的四大元件之一。它是一個沒有介面的元件,且優先順序大於後臺程序。 瞭解它的生命週期很有必要。 Service啟動的分類 啟動服務: 通過startService啟動的服務稱為啟動服務 繫結啟動服務: 通過bindSe

cuteFTP軟體往linux中上檔案時報…

 我是在win7和VM中的ubuntu傳輸檔案: 使用一個客戶端,可以正常的連線,但是當上傳檔案時,總是報553 Could not create file錯誤資訊。 主要原因是新建的資料夾沒有更改許可權!! 我也是按照網上的做法,對/var/ftp目錄進行許可權設定,如果設定為chmod -R 77

Service向Activity傳遞資料,更新UI

介面回撥、Handler、活動和服務繫結 1服務:執行定時任務,發起網路請求定位,請求到的結果傳遞到活動,在地圖上展示。 2活動關鍵程式碼: 繫結服務後會獲取LocationService.LocationBinder物件,在此處呼叫getLocation

資料持久化:檔案儲存、SharedPreferences儲存以及資料庫儲存

1,檔案儲存 手機自帶的記憶體,只能供當前應用程式訪問,其他應用程式訪問不了,程式解除安裝這些資料也會隨著消失 原理: 基本是先獲取一個檔案的輸出流,然後把資訊write進去,最後關閉流 a,通過上下文類context的openFileOutput()方法獲得一個FileOutputStream輸出流 b

java web專案中上檔案、圖片路徑問題

       最近搞web開發,遇到了上傳下載檔案路徑的問題,最後解決。現將處理方式整理分享如下。        其實 java web專案中關於上傳檔案、圖片路徑問題,一直對開發人員造成麻煩,其實瞭解了web的伺服器,這個問題也就徹底解決了。         java w

的styles.xml檔案和theme的使用

styles.xml的使用 基礎使用 在一些檢視中,它們具有相同的屬性並且相應屬性具有相同的值,此時可以使用”styles.xml”來統一設定。 定義styles: <resoures> <style name=