⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainactivity.java

📁 android4.0网络编程详解
💻 JAVA
字号:
package com.wangjialin.upload;import java.io.File;import java.io.OutputStream;import java.io.PushbackInputStream;import java.io.RandomAccessFile;import java.net.Socket;import cn.itcast.service.UploadLogService;import cn.itcast.utils.StreamTool;import android.app.Activity;import android.os.Bundle;import android.os.Environment;import android.os.Handler;import android.os.Message;import android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.ProgressBar;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity {    private EditText filenameText;    private TextView resultView;    private ProgressBar uploadbar;    private UploadLogService service;    private Handler handler = new Handler(){		@Override		public void handleMessage(Message msg) {			uploadbar.setProgress(msg.getData().getInt("length"));			float num = (float)uploadbar.getProgress() / (float)uploadbar.getMax();			int result = (int)(num * 100);			resultView.setText(result + "%");			if(uploadbar.getProgress() == uploadbar.getMax()){				Toast.makeText(MainActivity.this, R.string.success, 1).show();			}		}    };        @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                service =  new UploadLogService(this);        filenameText = (EditText)findViewById(R.id.filename);        resultView = (TextView)findViewById(R.id.result);        uploadbar = (ProgressBar)findViewById(R.id.uploadbar);        Button button = (Button)findViewById(R.id.button);        button.setOnClickListener(new View.OnClickListener() {				public void onClick(View v) {				String filename = filenameText.getText().toString();				if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){					File file = new File(Environment.getExternalStorageDirectory(), filename);					if(file.exists()){						uploadbar.setMax((int)file.length());						uploadFile(file);					}else{						Toast.makeText(MainActivity.this, R.string.notexsit, 1).show();					}				}else{					Toast.makeText(MainActivity.this, R.string.sdcarderror, 1).show();				}			}		});    }	private void uploadFile(final File file) {		new Thread(new Runnable() {				public void run() {				try {					String sourceid = service.getBindId(file);					Socket socket = new Socket("192.168.1.100", 7878);		            OutputStream outStream = socket.getOutputStream(); 		            String head = "Content-Length="+ file.length() + ";filename="+ file.getName() 		            	+ ";sourceid="+(sourceid!=null ? sourceid : "")+"\r\n";		            outStream.write(head.getBytes());		            		            PushbackInputStream inStream = new PushbackInputStream(socket.getInputStream());						String response = StreamTool.readLine(inStream);		            String[] items = response.split(";");					String responseSourceid = items[0].substring(items[0].indexOf("=")+1);					String position = items[1].substring(items[1].indexOf("=")+1);					if(sourceid==null){//如果是第一次上传文件,在数据库中不存在该文件所绑定的资源id						service.save(responseSourceid, file);					}					RandomAccessFile fileOutStream = new RandomAccessFile(file, "r");					fileOutStream.seek(Integer.valueOf(position));					byte[] buffer = new byte[1024];					int len = -1;					int length = Integer.valueOf(position);					while( (len = fileOutStream.read(buffer)) != -1){						outStream.write(buffer, 0, len);						length += len;//累加已经上传的数据长度						Message msg = new Message();						msg.getData().putInt("length", length);						handler.sendMessage(msg);					}					if(length == file.length()) service.delete(file);					fileOutStream.close();					outStream.close();		            inStream.close();		            socket.close();		        } catch (Exception e) {                    		        	Toast.makeText(MainActivity.this, R.string.error, 1).show();		        }			}		}).start();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -