天堂向右,我依然向左

天下之大,虽离家千里,何处不可往!何事不可为!
生活之路,纵坎坷曲折,当奋斗不息,则精彩纷呈!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1.Android SDK应该从什么地方下载?为什么(http://developer.Android.com/ )经常上不上去?

答:谷歌官网的 (http://developer.Android.com/ ) 这个被和谐了,经常上不去,中国的网络大家都是 知道的呵呵~

    下载SDK,我给大家推荐下面网站比较及时,和谷歌同步的!网址:( http://androidappdocs.appspot.com/ ).

2.drawable-hdpi,drawable-ldpi,drawable-mdpi有什么区别?

答:主要是为了支持多分辨率的.
hdpi里面主要放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
mdpi 里面主要放中等分辨率的图片,如HVGA (320x480)
ldpi里面主要放低分辨率的图片,如QVGA (240x320)
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片
所以在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片

3.Android 判断SdCard是否存在?

答:if (android .os.Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))

4.Android 删除文件为什么总是报错,删除不了?

答:Android自1.6版本以后,引入了一个权限,让用户可以修改外部存储设备文件,这个问题只要我们在Manifest.xml加一个permission节点就可以解决了:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

5.Android 如何判断系统语言?

 

view plaincopy to clipboardprint?
01.private String getLocaleLanguage() {  
02.        Locale l = Locale.getDefault();  
03.        return String.format("%s-%s", l.getLanguage(), l.getCountry());  
04.    } 
private String getLocaleLanguage() {
  Locale l = Locale.getDefault();
  return String.format("%s-%s", l.getLanguage(), l.getCountry());
 } 

返回en-US(也可能是en-XX)表示英语,zh-CN表示简体中文,zh-TW表示繁体中文,以此类推。

6.Android 如何判断系统时间是12小时制还是24小时制?

view plaincopy to clipboardprint?
01.ContentResolver cv = this.getContentResolver();  
02.        String strTimeFormat = android.provider.Settings.System.getString(cv,  
03.                                           android.provider.Settings.System.TIME_12_24); 
 ContentResolver cv = this.getContentResolver();
         String strTimeFormat = android.provider.Settings.System.getString(cv,
                                            android.provider.Settings.System.TIME_12_24);

返回值strTimeFormat有三种可能一种是NULL,一种是24,另外一种是12.


以上来自CSDN博客,转载请标明出处:http://blog.csdn.net/Android_Tutor/archive/2010/05/27/5629262.aspx

 

 错误集:

1. UNEXPECTED TOP-LEVEL EXCEPTION: 
java
.lang.IllegalArgumentException: already added:Lorg/xmlpull/v1/XmlPullParser; 
.... 
Conversion to Dalvik format failed with error 1 

i solved the problem.

i seems that is have two jars on my buildpath that include the same package and classes.

i used smack.jar and android_maps_lib-1.0.2

delete this package from one jar solved the problem.

 

 4. m访问网络(httppost httpget) 遇到本地pc设置有代理的问题时,依照一般的连接方式有错误

需在模拟器上添加:

System.getProperties().put("proxySet", "true"); 
System.getProperties().put("proxyHost", proxyIp); 
System.getProperties().put("proxyPort", proxyPort);

 第一行通知 Java 您要通过代理进行连接,第二行指定代理所在的机器,第三行指定代理监听的端口


5.android 正确获取屏幕像素大小

DisplayMetrics dm =new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
       
int widthPixels= dm.widthPixels;
       
int heightPixels= dm.heightPixels;
       
float density = dm.density;
               
int screenWidth = widthPixels * density ;
               
int screenHeight = heightPixels * density ;

 

6. 本地assets目录下的html文件:web2.loadUrl("file:///android_asset/index.html") ;

InputStreamReader inputReader = new InputStreamReader( getResources().getAssets().open(fileName) );                              

InputStreamReader inputReader = new InputStreamReader(getResources().openRawResource(R.raw.test1));     

 

 

 7. 检查网络是否可用:
public static boolean chkConnection() {

ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
        cwjManager.getActiveNetworkInfo();
       
if (cwjManager.getActiveNetworkInfo() !=null) {
            return
cwjManager.getActiveNetworkInfo().isAvailable();
        }
    return false;
}

 

 8.获取正在运行的任务,

首先需要声明一个活动对象管理器(ActivityManager) 所有的活动任务都属于此,然后通过获取服务可以得到所有的活动对象,然后通过活动对象可以得到所有运行的任务和服务,当然要获取服务和任务是使用不同的方法,但是方式是一样的。下面是获取代码:

 

 

代码
void getTask() {

ActivityManager activityManager;
try {
activityManager
= (ActivityManager) this
.getSystemService(ACTIVITY_SERVICE);

arylistTask
=new ArrayList<String>();



List
<ActivityManager.RunningTaskInfo> mRunningTasks =

activityManager.getRunningTasks(
30); //30表示获取的最大数

/* 以循环及baseActivity方式取得任务名称与ID */

for (RunningTaskInfo amTask : mRunningTasks)
{
Log.d(
"TaskInfo", amTask.baseActivity.getClassName()+"("+amTask.id+")");
}

//获取服务
List<RunningServiceInfo> mserviceTasks =

activityManager.getRunningServices(
30);
/* 以循环方式取得任务名称与ID */
for (RunningServiceInfo serinfo : mserviceTasks)
{
Log.d(
"TaskServerInfo", serinfo.process+"("+serinfo.pid+")");
}
}

catch (Exception e)

{



}

 

9.Android 获取MIEI ISMI Sim卡串号等信息

TelephonyManager telephonemanage = (TelephonyManager) getWindow().getContext().getSystemService(Context.TELEPHONY_SERVICE);
try {            
    edit1.setText(
"MIEI: " + telephonemanage.getDeviceId()+ "\n SimSSN " + telephonemanage.getSimSerialNumber()+ "\n IMSI " + telephonemanage.getSubscriberId());        
catch (Exception e) {            
    edit1.setText(e.getMessage());        

 

 

10.添加快捷图标

 

代码
privatevoid addShortcut(){
Intent shortcut
=new Intent("com.android.launcher.action.INSTALL_SHORTCUT");

//快捷方式的名称
shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
// shortcut.putExtra("duplicate", false); //不允许重复创建

//指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer
//注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序
// ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName());

// shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));
shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,ShortcutTest.class));

//快捷方式的图标
ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon);
shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);

sendBroadcast(shortcut);
}

   shortcut.putExtra("duplicate", false); //表示的为不允许重复设置

此种代码,直接添加到桌面上,并且也在上图所示的地方显示,但是此需要添加下面的权限:

 

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />  

 

11. 防止锁屏:
 PowerManager mPowerManager  = (PowerManager) getSystemService(POWER_SERVICE); //电源控制,比如防锁屏
  WakeLock mWakeLock= mPowerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, getClass()
                .getName()); //处理屏幕防止锁屏

 mWakeLock.acquire();  //恢复时解除锁屏
mWakeLock.release();

12. Drawable,Bitmap相互转换:

 

public static Bitmap drawableToBitmap(Drawable drawable) {   

           

        Bitmap bitmap = Bitmap   

                        .createBitmap(   

                                        drawable.getIntrinsicWidth(),   

                                        drawable.getIntrinsicHeight(),   

                                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   

                                                        : Bitmap.Config.RGB_565);   

        Canvas canvas = new Canvas(bitmap);   

        //canvas.setBitmap(bitmap);   

        drawable.setBounds(00, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());   

        drawable.draw(canvas);   

        return bitmap;   

}  

 

 

Resources res=getResources();   

 Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);  

 

 

private byte[] Bitmap2Bytes(Bitmap bm){   

    ByteArrayOutputStream baos = new ByteArrayOutputStream();     

 

    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);     

    return baos.toByteArray();   

   }  

 

 

private Bitmap Bytes2Bimap(byte[] b){   

            if(b.length!=0){   

                return BitmapFactory.decodeByteArray(b, 0, b.length);   

            }   

            else {   

                return null;   

            }   

      } 

 

12.关于Conversion to Dalvik format failed with error 1的解决


原因是不能直接加入android库,
方法:编辑.classpath文件,改为
<classpathentry kind="con" path="com.android.ide.eclipse.adt.ANDROID_FRAMEWORK"/>
即可

 

 

13. Android中resource参数变量使用

 

 

在Android开发中,经常会用到R.drawable.XXXX来调用资源图 片,但这种方式只能直接调用某一个已知名称的资源,如果想动态调用图片R.drawable.file1就不太方便。

如果遇到这种情况,可以用以下代码:

String iconname="file1" ;
int resID=getResources().getIdentifier(iconname, "drawable",  getPackageName());
imageview.setImageResource(resID);

14. Monkey 自动测试

 

15. 有个时候在在宽屏的模拟器里,App运行显示很小,无法全屏,可以在manifest里设置target version,min,max version即可.

16. 网络连接数据类:

ConnectivityManager connec =  (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

    通过它可以或者当前的网络连接类型以及支持的全部网络类型。

 

    可以创建一个Receiver来监控广播:ConnectivityManager.CONNECTIVITY_ACTION ,实时获取当前网络连接状态。

 

17. 模拟器配置上网:

第一步:用系统的命令进入Android开发包的tools目录

 cd X:\...\android
-sdk-windows\tool

第二布:使用adb的shell,确认系统的各项属性

adb shell

getprop

getprop会列出系统当前的各项属性

第三步:得到模拟器的DNS地址

在结果里可以看到:

[net.dns1]: [
10.0.2.3]
[net.dns2]: [
10.0.2.4]
[net.dns3]: [
10.0.2.5]
[net.dns4]: [
10.0.2.6]

第四步:把dns改成我们自己的DNS

setprop net.dns1 
192.168.1.1

注:一般TP
-LINK及D-LINK的DNS都是192.168.1.1,如果不是请使用ipcnofig /all命令确认。

大功告成,再去使用模拟器的浏览器的话,你就可以发现你已经可以上网了。

 

posted on 2010-11-02 22:08  老舟  阅读(1120)  评论(0编辑  收藏  举报