×

Android---常用代码片段整理

Kalet Kalet 发表于2013-12-27 20:03:44 浏览151 评论0

抢沙发发表评论

1
最近有时间,整理了一下项目中常用到的代码

1、图片旋转:

123456
Bitmap bitmapOrg = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.moon);Matrix matrix = new Matrix();matrix.postRotate(-90);//旋转的角度Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,bitmapOrg.getWidth(), bitmapOrg.getHeight(), matrix, true);BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);

2、获取手机号码:
//创建电话管理

TelephonyManager tm = (TelephonyManager)

//与手机建立连接
activity.getSystemService(Context.TELEPHONY_SERVICE);

//获取手机号码

String phoneId = tm.getLine1Number();

//记得在manifest file中添加

//程序在模拟器上无法实现,必须连接手机

3.格式化string.xml 中的字符串:
// in strings.xml..
Thanks for visiting %s. You age is %d!

// and in the java code:
String.format(getString(R.string.my_text), "oschina", 33);

4、Android设置全屏的方法:
A.在java代码中设置
/** 全屏设置,隐藏窗口所有装饰 */

123
requestWindowFeature(Window.FEATURE_NO_TITLE);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);

B、在AndroidManifest.xml中配置

1234567
<activity android:name=".Login.NetEdit"  android:label="@string/label_net_Edit"android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"><intent-filter><action android:name="android.intent.Net_Edit" /><category android:name="android.intent.category.DEFAULT" /></intent-filter></activity>

5、设置Activity为Dialog的形式:
在AndroidManifest.xml中配置Activity节点是配置theme如下:

1
Android:theme="@android:style/Theme.Dialog"

6、检查当前网络是否连上:

12345
ConnectivityManager con=(ConnectivityManager)getSystemService(Activity.CONNECTIVITY_SERVICE);boolean wifi=con.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();boolean internet=con.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

在AndroidManifest.xml 增加权限:

1
<uses-permission Android:name="android.permission.ACCESS_NETWORK_STATE" />

7、检测某个Intent是否有效:

12345678
public static boolean isIntentAvailable(Context context, String action) {final PackageManager packageManager = context.getPackageManager();final Intent intent = new Intent(action);List<ResolveInfo> list =packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);return list.size() > 0;}

8、android 拨打电话:

1234567
try {Intent intent = new Intent(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:+110"));startActivity(intent);} catch (Exception e) {Log.e("SampleApp", "Failed to invoke call", e);}

9、android中发送Email:

1234567
Intent i = new Intent(Intent.ACTION_SEND);//i.setType("text/plain"); //模拟器请使用这行i.setType("message/rfc822") ; // 真机上使用这行i.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@gmail.com","test@163.com});i.putExtra(Intent.EXTRA_SUBJECT,"subject goes here");i.putExtra(Intent.EXTRA_TEXT,"body goes here");startActivity(Intent.createChooser(i, "Select email application."));

10、Android中打开浏览器:**

123
Intent viewIntent = newIntent("android.intent.action.VIEW",Uri.parse("http://vaiyanzi.cnblogs.com"));startActivity(viewIntent);

11、Android 获取设备唯一标识码:
String android_id = Secure.getString(getContext().getContentResolver(), Secure.ANDROID_ID);

12、Android中获取IP地址:

123456789101112131415161718
public String getLocalIpAddress() {try {for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();en.hasMoreElements();) {NetworkInterface intf = en.nextElement();for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses();enumIpAddr.hasMoreElements();) {InetAddress inetAddress = enumIpAddr.nextElement();if (!inetAddress.isLoopbackAddress()) {return inetAddress.getHostAddress().toString();}}}} catch (SocketException ex) {Log.e(LOG_TAG, ex.toString());}return null;}

13、android获取存储卡路径以及使用情况:
/** 获取存储卡路径 
File sdcardDir=Environment.getExternalStorageDirectory(); 
/
* StatFs 看文件系统空间使用情况 
StatFs statFs=new StatFs(sdcardDir.getPath()); 
/
* Block 的 size*/ 
Long blockSize=statFs.getBlockSize(); 
/** 总 Block 数量 
Long totalBlocks=statFs.getBlockCount(); 
/
* 已使用的 Block 数量 */ 
Long availableBlocks=statFs.getAvailableBlocks();

14 android中添加新的联系人:

1234567891011121314
private Uri insertContact(Context context, String name, String phone) {ContentValues values = new ContentValues();values.put(People.NAME, name);Uri uri = getContentResolver().insert(People.CONTENT_URI, values);Uri numberUri = Uri.withAppendedPath(uri, People.Phones.CONTENT_DIRECTORY);values.clear();values.put(Contacts.Phones.TYPE, People.Phones.TYPE_MOBILE);values.put(People.NUMBER, phone);getContentResolver().insert(numberUri, values);return uri;}

15、查看电池使用情况:

12
Intent intentBatteryUsage = new Intent(Intent.ACTION_POWER_USAGE_SUMMARY);startActivity(intentBatteryUsage);

16、从res/raw打开文件

123456789101112131415161718192021
public static String openFileFromRaw(Context context) throws IOException {String content = "";InputStream inputStream = context.getResources().openRawResource(R.raw.provinces);if (inputStream != null) {BufferedReader buffreader = new BufferedReader(new InputStreamReader(inputStream));String line;//分行读取try {while ((line = buffreader.readLine()) != null) {content += line + "n";}} catch (IOException e) {e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.}inputStream.close();}return content   ;}

17 得到屏幕尺寸

123
Display display = getWindowManager().getDefaultDisplay();int width = display.getWidth(); //宽int height = display.getHeight();  //高

18 关闭软键盘

12345
private void hideSoftInput() {InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);}

19 回退按钮

1234567891011121314151617181920212223
public boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {new AlertDialog.Builder(activity_login.this).setTitle("退出系统").setMessage("确定要退出系统吗").setPositiveButton("退出",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {finish();}})// Leave.setNegativeButton("取消",new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog,int which) {dialog.cancel();}}).show();}return false;}

20 btn_selector

123456789
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"><!-- pressed --><item android:state_pressed="true" android:drawable="@drawable/btn_press"/><!-- focused --><item android:state_focused="true" android:drawable="@drawable/btn"/><!-- default --><item android:drawable="@drawable/btn"/></selector>

21 关闭游标和数据库

1234567891011121314151617181920
private void close(Cursor cursor, SQLiteDatabase database){try{if (cursor != null && !cursor.isClosed()){cursor.close();}}catch (Exception e){}try{dbHelper.closeDb(database);}catch (Exception e){}}

22 MD5加密

12345678910111213141516
public static String md5(String string) {byte[] hash;try {hash = MessageDigest.getInstance("MD5").digest(string.getBytes("UTF-8"));} catch (NoSuchAlgorithmException e) {throw new RuntimeException("Huh, MD5 should be supported?", e);} catch (UnsupportedEncodingException e) {throw new RuntimeException("Huh, UTF-8 should be supported?", e);}StringBuilder hex = new StringBuilder(hash.length * 2);for (byte b : hash) {if ((b & 0xFF) < 0x10) hex.append("0");hex.append(Integer.toHexString(b & 0xFF));}return hex.toString().toLowerCase();}

23、系统的版本信息

1234567891011121314151617181920
public String[] getVersion(){String[] version={"null","null","null","null"};String str1 = "/proc/version";String str2;String[] arrayOfString;try {FileReader localFileReader = new FileReader(str1);BufferedReader localBufferedReader = new BufferedReader(localFileReader, 8192);str2 = localBufferedReader.readLine();arrayOfString = str2.split("\s+");version[0]=arrayOfString[2];//KernelVersionlocalBufferedReader.close();} catch (IOException e) {}version[1] = Build.VERSION.RELEASE;// firmware versionversion[2]=Build.MODEL;//modelversion[3]=Build.DISPLAY;//system versionreturn version;}

24、mac地址和开机时间

12345678910111213141516171819202122
public String[] getOtherInfo(){String[] other={"null","null"};WifiManager wifiManager = (WifiManager) mContext.getSystemService(Context.WIFI_SERVICE);WifiInfo wifiInfo = wifiManager.getConnectionInfo();if(wifiInfo.getMacAddress()!=null){other[0]=wifiInfo.getMacAddress();} else {other[0] = "Fail";}other[1] = getTimes();return other;}private String getTimes() {long ut = SystemClock.elapsedRealtime() / 1000;if (ut == 0) {ut = 1;}int m = (int) ((ut / 60) % 60);int h = (int) ((ut / 3600));return h + " " + mContext.getString(R.string.info_times_hour) + m + " "+ mContext.getString(R.string.info_times_minute);}

25、CPU频率,CPU信息:/proc/cpuinfo和/proc/stat
通过读取文件/proc/cpuinfo系统CPU的类型等多种信息。
读取/proc/stat 所有CPU活动的信息来计算CPU使用率

下面我们就来讲讲如何通过代码来获取CPU频率:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
package com.orange.cpu;import java.io.BufferedReader;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.io.InputStream;public class CpuManager {**   // 获取CPU最大频率(单位KHZ)// "/system/bin/cat" 命令行// "/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" 存储最大频率的文件的路径**public static String getMaxCpuFreq() {String result = "";ProcessBuilder cmd;try {String[] args = { "/system/bin/cat","/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq" };cmd = new ProcessBuilder(args);Process process = cmd.start();InputStream in = process.getInputStream();byte[] re = new byte[24];while (in.read(re) != -1) {result = result + new String(re);}in.close();} catch (IOException ex) {ex.printStackTrace();result = "N/A";}return result.trim();}**// 获取CPU最小频率(单位KHZ)**public static String getMinCpuFreq() {String result = "";ProcessBuilder cmd;try {String[] args = { "/system/bin/cat","/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq" };cmd = new ProcessBuilder(args);Process process = cmd.start();InputStream in = process.getInputStream();byte[] re = new byte[24];while (in.read(re) != -1) {result = result + new String(re);}in.close();} catch (IOException ex) {ex.printStackTrace();result = "N/A";}return result.trim();}**// 实时获取CPU当前频率(单位KHZ)**public static String getCurCpuFreq() {String result = "N/A";try {FileReader fr = new FileReader("/sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq");BufferedReader br = new BufferedReader(fr);String text = br.readLine();result = text.trim();} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return result;}** // 获取CPU名字**public static String getCpuName() {try {FileReader fr = new FileReader("/proc/cpuinfo");BufferedReader br = new BufferedReader(fr);String text = br.readLine();String[] array = text.split(":\s+", 2);for (int i = 0; i < array.length; i++) {}return array[1];} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}}

26、内存:/proc/meminfo

123456789101112
public void getTotalMemory() {String str1 = "/proc/meminfo";String str2="";try {FileReader fr = new FileReader(str1);BufferedReader localBufferedReader = new BufferedReader(fr, 8192);while ((str2 = localBufferedReader.readLine()) != null) {Log.i(TAG, "---" + str2);}} catch (IOException e) {}}

声明:eoe文章著作权属于作者,受法律保护,转载时请务必以超链接形式附带如下信息

原文作者: slu128

原文地址: http://my.eoe.cn/loody128/archive/3244.html

群贤毕至

访客