[Android初级]普通代码库

1.监听屏幕开闭

//用代码创建一个内部广播接收者,监听开屏
private class InnerScreenReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
          //因为只监听一个动作,因此没有必要去进行判断了
          if(intent.getAction().equals(Intent.ACTION_SCREEN_OFF)){
          //杀死进程
    }
        
    
    //创建一个activity管理器对象
    ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    //获取所有运行着的进程
    List processes = am.getRunningAppProcesses();
    for (RunningAppProcessInfo processInfo : processes) {
              String processName = processInfo.processName;
              //进程名就是应用的包名
              String packageName = processName;
             am.killBackgroundProcesses(packageName);
        }
    }
}

2.不需要权限的打电话发短信代码

//打电话(要需要权限,因为只是跳转到打电话的页面去)
Uri uri = Uri.parse("tel:"+tel);
Intent it = new Intent(Intent.ACTION_DIAL, uri);
context.startActivity(it);

//发短信(不需要权限,因为只是跳转到打电话的页面去)
Uri uri = Uri.parse("smsto:"+tel);
Intent it = new Intent(Intent.ACTION_SENDTO, uri);
context.startActivity(it);

3.几个unicode符号

在安卓的string.xml中用到的

…  代表   ...   三个点的省略号
–  代表   -     一个破折号
&#xxxx;
其中xxxx都为数字,是unicode值
此处8230对应的是unicode中的那三个点的特殊字符

4.android 横竖屏切换

 


public void onConfigurationChanged(Configuration newConfig) {  
   super.onConfigurationChanged(newConfig);  
    if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE) {  
        //加入横屏要处理的代码  
    }else if (this.getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {  
        //加入竖屏要处理的代码  
    }  
}

5.android 获取mac地址

    
private String getLocalMacAddress() {  
    WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);  
    WifiInfo info = wifi.getConnectionInfo();  
    return info.getMacAddress();  
}

6.android 判断网络状态

  
  
private boolean getNetWorkStatus() {  
   boolean netSataus = false;  
   ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);  
  
   if (cwjManager.getActiveNetworkInfo() != null) {  
        netSataus = cwjManager.getActiveNetworkInfo().isAvailable();  
   }  
  
   if (!netSataus) {  
       Builder b = new AlertDialog.Builder(this).setTitle("没有可用的网络").setMessage("是否对网络进行设置?");  
       b.setPositiveButton("是", new DialogInterface.OnClickListener() {  
               public void onClick(DialogInterface dialog, int whichButton) {  
               Intent mIntent = new Intent("/");  
               ComponentName comp = new ComponentName(  
               "com.android.settings",  
               "com.android.settings.WirelessSettings");  
               mIntent.setComponent(comp);  
               mIntent.setAction("android.intent.action.VIEW");  
               startActivityForResult(mIntent,0);   
            }  
        }).setNeutralButton("否", new DialogInterface.OnClickListener() {  
           public void onClick(DialogInterface dialog, int whichButton) {  
                dialog.cancel();  
            }  
           }).show();  
        }  
  
    return netSataus;  
}

7.android 根据uri获取路径

Uri uri = data.getData();
String[] proj = { MediaStore.Images.Media.DATA };
Cursor actualimagecursor = managedQuery(uri,proj,null,null,null);
int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
actualimagecursor.moveToFirst();
String img_path = actualimagecursor.getString(actual_image_column_index);
File file = new File(img_path);

8.android 开机启动

public class StartupReceiver extends BroadcastReceiver {  
  
  @Override  
  public void onReceive(Context context, Intent intent) {  
    Intent startupintent = new Intent(context,StrongTracks.class);  
    startupintent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  
    context.startActivity(startupintent);  
  }  
}  
  
      
          
          
      
 

9.android 重启

第一,root权限,这是必须的 
第二,Runtime.getRuntime().exec("su -c reboot"); 
第三,模拟器上运行不出来,必须真机 
第四,运行时会提示你是否加入列表 , 同意就好

10.android 挪动dialog的位置

Window mWindow = dialog.getWindow();  
WindowManager.LayoutParams lp = mWindow.getAttributes();  
lp.x = 10;   //新位置X坐标  
lp.y = -100; //新位置Y坐标  
dialog.onWindowAttributesChanged(lp);
或者
Window =dialog.getWindow();//    得到对话框的窗口.  
WindowManager.LayoutParams wl = window.getAttributes();  
wl.x = x;//这两句设置了对话框的位置.0为中间  
wl.y =y;  
wl.width =w;  
wl.height =h;  
wl.alpha =0.6f;// 这句设置了对话框的透明度   

11.android 禁用home键盘

问题的提出:Android Home键系统负责监听,捕获后系统自动处理。有时候,系统的处理往往不随我们意,想自己处理点击Home后的事件,那怎么办?

问题的解决:先禁止Home键,再在onKeyDown里处理按键值,点击Home键的时候就把程序关闭,或者随你XXOO。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event){ // TODO Auto-generated method stub
    if(KeyEvent.KEYCODE_HOME==keyCode)
        android.os.Process.killProcess(android.os.Process.myPid());
    return super.onKeyDown(keyCode, event);
}
@Override
public void onAttachedToWindow(){ 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
    super.onAttachedToWindow();
}
加权限禁止Home键


12.android 对话框样式


13.android 获取各种窗体高度

//取得窗口属性
getWindowManager().getDefaultDisplay().getMetrics(dm);
//窗口的宽度
int screenWidth = dm.widthPixels;
//窗口高度
int screenHeight = dm.heightPixels;
textView = (TextView)findViewById(R.id.textView01);
textView.setText("屏幕宽度: " + screenWidth + "\n屏幕高度: " + screenHeight);

二、获取状态栏高度
decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 
于是,我们就可以算出状态栏的高度了。
Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

三、获取标题栏高度
getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight

14.BitMap、Drawable、inputStream及byte[] 互转

(1) BitMap  to   inputStream:
          ByteArrayOutputStream baos = new ByteArrayOutputStream();
          bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
          InputStream isBm = new ByteArrayInputStream(baos .toByteArray());
 
(2)BitMap  to   byte[]:
          Bitmap defaultIcon = BitmapFactory.decodeStream(in);
          ByteArrayOutputStream stream = new ByteArrayOutputStream();
          defaultIcon.compress(Bitmap.CompressFormat.JPEG, 100, stream);
          byte[] bitmapdata = stream.toByteArray();
         (3)Drawable  to   byte[]:
          Drawable d; // the drawable (Captain Obvious, to the rescue!!!)
          Bitmap bitmap = ((BitmapDrawable)d).getBitmap();
          ByteArrayOutputStream stream = new ByteArrayOutputStream();
          defaultIcon.compress(Bitmap.CompressFormat.JPEG, 100, bitmap);
          byte[] bitmapdata = stream.toByteArray();
 
(4)byte[]  to  Bitmap :
          Bitmap bitmap =BitmapFactory.decodeByteArray(byte[], 0,byte[].length);

15.发送指令

out = process.getOutputStream();
out.write(("am start -a android.intent.action.VIEW -n com.android.browser/com.android.browser.BrowserActivity\n").getBytes());
out.flush();

InputStream in = process.getInputStream();
BufferedReader re = new BufferedReader(new InputStreamReader(in));
String line = null;
while((line = re.readLine()) != null) {
    Log.d("conio","[result]"+line);
}

16.Android获取状态栏和标题栏的高度

1.Android获取状态栏高度:

decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。

于是,我们就可以算出状态栏的高度了。

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
int statusBarHeight = frame.top;

2.获取标题栏高度:

getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。

int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();
//statusBarHeight是上面所求的状态栏的高度
int titleBarHeight = contentTop - statusBarHeight

例子代码:

package com.cn.lhq;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.widget.ImageView;
public class Main extends Activity {
 ImageView iv;
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  iv = (ImageView) this.findViewById(R.id.ImageView01);
  iv.post(new Runnable() {
   public void run() {
    viewInited();
   }
  });
  Log.v("test", "== ok ==");
 }
 private void viewInited() {
  Rect rect = new Rect();
  Window window = getWindow();
  iv.getWindowVisibleDisplayFrame(rect);
  int statusBarHeight = rect.top;
  int contentViewTop = window.findViewById(Window.ID_ANDROID_CONTENT)
    .getTop();
  int titleBarHeight = contentViewTop - statusBarHeight;
  // 测试结果:ok之后 100多 ms 才运行了
  Log.v("test", "=-init-= statusBarHeight=" + statusBarHeight
    + " contentViewTop=" + contentViewTop + " titleBarHeight="
    + titleBarHeight);
 }
}

 



 

你可能感兴趣的:([Android初级]普通代码库)