編輯:關於Android編程
Environment.getExternalStorageDirectory(Environment.DIRECTORY_DOWNLOAD) 公共目錄中的download目錄中
package com.qf.day12_storage_external; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; import com.qf.day12_storage_external.tools.HttpUtils; import com.qf.day12_storage_external.tools.SDCardUtils; public class MainActivity extends Activity { private ImageView iv; private String path = "http://img5.duitang.com/uploads/blog/201602/21/20160221193234_EtLYz.jpeg"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); } public void downLoad(View v) { //如果sd卡中有圖片, 則取出並顯示 Bitmap bitmap = SDCardUtils.getBitmap(path); if(bitmap!=null) { iv.setImageBitmap(bitmap); } else { //如果sd卡中沒有圖片, 開啟異步任務下載圖片, 並且將下載好的圖片存入sd卡中 new MyTask().execute(path); } } public void show(View v) { Intent intent = new Intent(this, SecondActivity.class); startActivity(intent); } /** * 自定義 異步任務 下載圖片 * @author Administrator * */ public class MyTask extends AsyncTask{ @Override protected Bitmap doInBackground(String... params) { // TODO 下載圖片 byte[] data = HttpUtils.getByteResult(params[0]); if(data!=null && data.length>0) { //將下載好的圖片, 存入sd卡中 SDCardUtils.saveImg(params[0], data); return BitmapFactory.decodeByteArray(data, 0, data.length); } return null; } @Override protected void onPostExecute(Bitmap result) { // TODO 更新UI super.onPostExecute(result); if(result!=null) { iv.setImageBitmap(result); Toast.makeText(MainActivity.this, "圖片下載成功!!", Toast.LENGTH_SHORT).show(); }else Toast.makeText(MainActivity.this, "數據加載失敗,請稍後再試...", Toast.LENGTH_SHORT).show(); } } }
package com.qf.day12_storage_external; import com.qf.day12_storage_external.tools.SDCardUtils; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.EditText; public class SecondActivity extends Activity { private EditText nameEdit,contentEdit; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); nameEdit = (EditText) findViewById(R.id.file_name); contentEdit = (EditText) findViewById(R.id.content_id); } //保存 public void save(View v) { //得到輸入框的內容 String fileName = nameEdit.getText().toString().trim(); String content = contentEdit.getText().toString().trim(); //向sd卡的私有目錄中存入數據 SDCardUtils.savePrivate(this,fileName,content); } //打開 public void open(View v) { String fileName = nameEdit.getText().toString().trim(); //根據名稱 從sd卡的私有目錄中得到內容 String content = SDCardUtils.open(this,fileName); contentEdit.setText(content); } }
package com.qf.day12_storage_external.tools; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import android.graphics.Bitmap; import android.graphics.BitmapFactory; /** * Http 加載網絡數據 * @author Administrator * */ public class HttpUtils { /** * 加載網絡數據 * @param path 路徑 * @return String */ public static String getStringResult(String path) { HttpURLConnection conn = null; InputStream is = null; try { //1, 得到URL 對象 URL url = new URL(path); //2, 打開連接 conn = (HttpURLConnection) url.openConnection(); //3, 設置請求方式 conn.setRequestMethod("GET"); //4, 連接 conn.connect(); //5, 判斷返回的結果碼 (200),得到響應數據 if(conn.getResponseCode() == 200) { is = conn.getInputStream(); StringBuilder sBuilder = new StringBuilder(); byte[] buffer = new byte[1024]; int len = 0; while ((len = is.read(buffer))!=-1) { sBuilder.append(new String(buffer,0,len)); } return sBuilder.toString(); } } catch (Exception e) { e.printStackTrace(); }finally { if(conn!=null) { conn.disconnect(); } if(is!=null) { try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return null; } /** * 加載網絡圖片 * @param path * @return byte[] */ public static byte[] getByteResult(String path) { HttpURLConnection conn = null; InputStream is = null; ByteArrayOutputStream baos = null; try { //1, 得到URL 對象 URL url = new URL(path); //2, 打開連接 conn = (HttpURLConnection) url.openConnection(); //3, 設置請求方式 conn.setRequestMethod("GET"); //4, 連接 conn.connect(); //5, 判斷返回的結果碼 (200),得到響應數據 if(conn.getResponseCode() == 200) { is = conn.getInputStream(); baos = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len=is.read(buffer))!=-1) { baos.write(buffer, 0, len); baos.flush(); } return baos.toByteArray(); } } catch (Exception e) { e.printStackTrace(); }finally { if(conn!=null) { conn.disconnect(); } if(is!=null) { try { is.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(baos!=null) { try { baos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return null; } }
package com.qf.day12_storage_external.tools; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.Buffer; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Build; import android.os.Environment; import android.os.StatFs; /** * sd 卡的存儲 * @author Administrator * */ public class SDCardUtils { //保存圖片的目錄 //private static final String PATH = Environment.getExternalStorageDirectory()+"/1614/img/"; private static final String PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+File.separator; /** * 判斷當前的sd卡是否可用 * * MEDIA_MOUNTED SD的可用狀態 * @return */ public static boolean isMounted() { //1, 得到當前sd的狀態 String state = Environment.getExternalStorageState(); //2, 跟系統提供的掛載狀態比較 return state.equals(Environment.MEDIA_MOUNTED); } /** * 從圖片路徑中, 獲取圖片的名稱 * @param path * @return */ public static String getFileName(String path) { return path.substring(path.lastIndexOf("/")+1); } /** * 保存圖片到sd卡的公共目錄中 * @param path 圖片的路徑 (截取圖片名稱) * @param data 圖片內容 * @throws Exception */ public static void saveImg(String path,byte[] data) { FileOutputStream fos = null; try { //1, 判斷當前的sd卡是否可用 if(!isMounted()) return; //2, 判斷當前緩存的目錄是否存在, 如果不存在 級聯創建 File dir = new File(PATH); if(!dir.exists()) { dir.mkdirs();//級聯創建 } //3, 將圖片的字節,寫入到指定的文件中 fos = new FileOutputStream(new File(dir, getFileName(path))); fos.write(data); } catch (Exception e) { e.printStackTrace(); }finally { try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } /** * 根據圖片的名稱, 從sd卡的公共目錄中, 讀取圖片內容 * @param path * @return */ public static Bitmap getBitmap(String path) { if(!isMounted()) return null; File file = new File(PATH, getFileName(path)); if(file.exists()) { //把絕對路徑中的圖片 轉成Bitmap格式 return BitmapFactory.decodeFile(file.getAbsolutePath()); } return null; } /** * 向Sd卡的私有目錄中寫入內容 * @param fileName * @param content */ public static void savePrivate(Context context,String fileName, String content) { //判斷sd卡的狀態是否可用 if(!isMounted()) return; //Sd卡的私有根目錄 context.getExternalFilesDir(null) //context.getExternalCacheDir() 緩存中 File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName); FileOutputStream fos = null; try { fos = new FileOutputStream(file); fos.write(content.getBytes()); } catch (Exception e) { e.printStackTrace(); } finally { if(fos!=null) { try { fos.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } } /** * 根據文件名稱 讀取外部存儲私有目錄中的文件內容 * @param context * @param fileName * @return */ public static String open(Context context, String fileName) { String result = null; if(!isMounted()) return result; //創建外邊存儲的文件對象 //context.getExternalCacheDir() 緩存中 File file = new File(context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS), fileName); FileInputStream fis = null; BufferedReader reader = null; StringBuilder sBuilder = new StringBuilder(); try { fis = new FileInputStream(file); reader = new BufferedReader(new InputStreamReader(fis)); String line = null; while ((line= reader.readLine())!=null) { sBuilder.append(line); } result = sBuilder.toString(); } catch (Exception e) { e.printStackTrace(); }finally{ if(fis!=null) { try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if(reader!=null) { try { reader.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } return result; } //---------------------- /** * 清除sd卡指定目錄中的數據 */ public static void clearCaches() { if(!isMounted()) return ; //得到緩存目錄中的文件 File file = new File(PATH); if(file.exists()) { //列出指定目錄中的所有文件 File[] files = file.listFiles(); for(File fl: files) { fl.delete();//刪除文件 } } } /** * 判斷sd卡的可用空間 */ public static boolean isAvailable() { if(!isMounted()) return false; //1, 實例化文件管理系統的狀態對象 StatFs StatFs statFs = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath()); long size = 0; //字節 if(Build.VERSION.SDK_INT >=18) { size = statFs.getFreeBytes(); }else { //可用的代碼塊 * 每個塊的大小 size = statFs.getFreeBlocks() * statFs.getBlockSize(); } //可用空間必須大於10M , 則表示可以使用 if(size > 10*1024*1024) { return true; } return false; } }
一說到支付寶,相信沒有人不知道,生活中付款,轉賬都會用到。今天來詳細介紹下在android中如何集成支付寶支付到自己的APP中去。讓APP能夠擁有方便,快捷的支付功能。准
ListView在android開放中用的比較多,所以接下來就進行ListView的使用的講解。 首先創建一個android項目,項目名為ListViewTest. Li
Fiddler是一款免費的抓包、調試工具,比Wireshark要小巧,更簡潔,本節就來介紹如何通過WIFI來抓取Android手機的HTTP和HTTPS包。一、連接And
昨天有人問我Android怎麼連接mysql數據庫,和對數據庫的操作呀,我想把,給他說說json通信,可是他並不知道怎麼弄,哎算了吧,直接叫他用ksoap吧,給他說了大半