2G   2.5 gprs 最大下载速度 30KB3G   hsdpa  7.2M 4G   35Mbps ophone 基于android改版的操作系统 3G的基带带宽 联通6M  6M/100 600K   移动 3.1M  中国电信 固定网络非常多3G -> wifiwap 2.5G   逐步被淘汰  net 互联网 3gnet android : 操作系统 + 部分应用层软件的集合.免费 开源.移动 ophone android米miui  androidcymod  iptv机顶盒 -> android 2.1 以上的版本 87% sip通话的支持 : session setup protocol.会话建立的协议.ip通话 ip视频协议栈的支持 3.0 3.1 针对平板设计 2.2 2.3 进行开发2.2 版本2.3 版本 2.3模拟器  一年android  8K 1.5W 物流网乐os android 运行时 dalvik 虚拟机 跟  普通java虚拟机不一样 sun java虚拟机普通java 虚拟机 .java->.class->解释执行 dalvik ->.class ->.dexpublic static final String s="nihao":;两个虚拟机之间的区别,jdk 1.5 以上版本如果使用eclipse3.7 版本  jdk> 1.6ADT  android development toolsandroid 开发工具  http://dl-ssl.google.com/android/repository/repository-5.xmlandroid-2.3.1_r02-linux.ziphttp://dl-ssl.google.com/android/repository/android-2.3.1_r02-linux.ziphttp://dl-ssl.google.com/android/repository/android-2.3.1_r02-windows.zipusb 禁用.搭建android开发android 2.2  是google api的子集  如果使用 google 地图 google 纵横,则需要用到google API。google api level 8  VGA    640*480  像素 hvga   half vga   480*320 qvga  1/4 vga    320*240WVGA   800* 480 FWVGA  854 * 480  luncher  桌面  相当于windows的桌面。 ddms dalvik debug manager systemdalvik 虚拟器调试系统 sysout();安卓是分为两个不同的信道,这两个东西是不相干的,所以你打电话和上网是没有关系的,不过出于一些的配置原因,一些开发商可能会在打电话的时间将另外一个关闭掉。两种信道:data voice 两种信道。android 手机 小电脑 可以上网      data可以打电话的小电脑   可以打电话   voice 模拟器 和 虚拟机的区别是什么 ?java 虚拟机dalvik 虚拟机 虚拟机:是 软件模拟硬件  内存 cpu 显示器android 很多版本 1.5~4.0 对应数字1.5   -api 31.6        42.1        72.2        84.0        144.0.3      15adb.exe   android debug bridge  android的调试桥socket tcp adb 的文件操作 把一个文件拷贝到手机内存 adb push [源文件] [目标文件]adb push haha1.txt /mnt/sdcard/haha1.txt adb pull [源文件] [目标文件][2012-03-09 10:33:00 - ddms]transfer error: Invalid argument[2012-03-09 10:49:49 - DeviceMonitor]Adb connection Error:远程主机强迫关闭了一个现有的连接。[2012-03-09 10:49:50 - DeviceMonitor]Connection attempts: 1[2012-03-09 10:49:52 - DeviceMonitor]Connection attempts: 2[2012-03-09 10:49:54 - DeviceMonitor]Connection attempts: 3[2012-03-09 10:49:56 - DeviceMonitor]Connection attempts: 4[2012-03-09 10:49:58 - DeviceMonitor]Connection attempts: 5[2012-03-09 10:49:59 - DeviceMonitor]Connection attempts: 6[2012-03-09 10:50:01 - DeviceMonitor]Connection attempts: 7[2012-03-09 10:50:03 - DeviceMonitor]Connection attempts: 8[2012-03-09 10:50:05 - DeviceMonitor]Connection attempts: 9如果出现上面错误:adb 连接的调试桥的socket出现了错误 1. adb kill-server2.  adb start-server把电脑上的某个应用装(. apk)到模拟器或者手机里面 adb install  demo.apkFailure [INSTALL_FAILED_ALREADY_EXISTS]卸载一个手机上的程序 adb uninstall [包名]豌豆夹 91手机助手 qq手机管家  system32 adb.exe 这上面的所有软件能做的功能,都是通过ADB这个命令来做的。在你的C盘的system32目录下面会多出adb.exe这个软件。软件不过是对这些命令进行再包装。因为你安装了第三方的软件,而它又在系统的环境变量里面,所以安卓会优先用它,当版本不一致的时间会出现这些问题。莫名其妙问题 adb 版本不兼容 adb version 查看adb的版本adb devices 查看当前所有连接上来的设备信息 adb shell 来到模拟器或者是真机的控制台 ,其实就是来到了linux控制台下,所有linux命令都可以这里面用。ls 查看目录信息 ps 查看当前运行进程信息kill pid 杀死进程 ctrl+F11 横竖屏切换  [2012-03-09 11:16:56 - HelloWorld] ------------------------------[2012-03-09 11:16:56 - HelloWorld] Android Launch![2012-03-09 11:16:56 - HelloWorld] adb is running normally.[2012-03-09 11:16:56 - HelloWorld] Performing cn.itcast.helloworld.DemoActivity activity launch[2012-03-09 11:16:56 - HelloWorld] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'iphone'[2012-03-09 11:16:56 - HelloWorld] Uploading HelloWorld.apk onto device 'emulator-5554'[2012-03-09 11:16:56 - HelloWorld] Installing HelloWorld.apk...[2012-03-09 11:17:00 - HelloWorld] Success![2012-03-09 11:17:00 - HelloWorld] Starting activity cn.itcast.helloworld.DemoActivity on device emulator-5554[2012-03-09 11:17:02 - HelloWorld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=cn.itcast.helloworld/.DemoActivity }project.properties 指定开发使用的android.jar的版本 ,你更改后它会自动改变项目的jar包。default.properties adt 和sdk 的版本过低  (用ADT15和SDK8是比较好的。)proguard.cfg 程序发布时候的混淆 防止别人反编译 AndroidManifest.xml 非常重要 系统的清单文件 相当于 windows操作系统的注册表 R.java里面的每一个静态的东西,对就于资源文件,第一,说明这是它的资源的引用。第二、static 这种类型 dalvik虚拟机会对这种类型的数据类型给自动抽取出来,让大家共同用,这是安卓虚拟机与安卓的代码方法相高互应的地方。在配置文件里面调用资源文件时间,是调用的它的引用。为什么加个@很明显它是在表示内部类。@string/appName,就表示在R文件下string这个内部类里面的资源。其它的资源引用的原理含义一样。R文件本身是一个final类,里面有非常多的内部类,表示资源的分类,而每有个内部类下面又有非常多的具体资源的引用信息。用的时间引用即可。@+id/et  就表示在R中id的内部类中加一个叫et的成员变量。 <uses-sdk android:minSdkVersion="9" /> android2.3 以下的版本不可以安装这个应用程序 [2012-03-09 11:25:32 - HelloWorld] ERROR: Application requires API version 9. Device API version is 8 (Android 2.2).[2012-03-09 11:25:32 - HelloWorld] Launch canceled!activity代表-  应用程序的界面 layout目录是程序界面的布局(activity)  DemoActivity 03-09 11:43:14.185: E/AndroidRuntime(1093): FATAL EXCEPTION: main03-09 11:43:14.185: E/AndroidRuntime(1093): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{cn.itcast.helloworld/cn.itcast.helloworld.DemoActivlty}: java.lang.ClassNotFoundException: cn.itcast.helloworld.DemoActivlty in loader dalvik.system.PathClassLoader[/data/app/cn.itcast.helloworld-2.apk]03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.ActivityThread.access$2300(ActivityThread.java:125)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.os.Handler.dispatchMessage(Handler.java:99)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.os.Looper.loop(Looper.java:123)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.ActivityThread.main(ActivityThread.java:4627)03-09 11:43:14.185: E/AndroidRuntime(1093): at java.lang.reflect.Method.invokeNative(Native Method)03-09 11:43:14.185: E/AndroidRuntime(1093): at java.lang.reflect.Method.invoke(Method.java:521)03-09 11:43:14.185: E/AndroidRuntime(1093): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)03-09 11:43:14.185: E/AndroidRuntime(1093): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)03-09 11:43:14.185: E/AndroidRuntime(1093): at dalvik.system.NativeStart.main(Native Method)03-09 11:43:14.185: E/AndroidRuntime(1093): Caused by: java.lang.ClassNotFoundException: cn.itcast.helloworld.DemoActivlty in loader dalvik.system.PathClassLoader[/data/app/cn.itcast.helloworld-2.apk]03-09 11:43:14.185: E/AndroidRuntime(1093): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)03-09 11:43:14.185: E/AndroidRuntime(1093): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)03-09 11:43:14.185: E/AndroidRuntime(1093): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)03-09 11:43:14.185: E/AndroidRuntime(1093): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)03-09 11:43:14.185: E/AndroidRuntime(1093): ... 11 more必须明白的:安卓软件的启动流程首先会读取AndroidManifest.xml下面的信息,根据XML里面的package="cn.itcast.activity"找到android:name=".HelloWorldActivity",即,找到了某个包下面的某个类,上面的错误信息是因为配置文件错误没有找到。由于清单文件的注册表的信息 配置错误 系统找不到对应的activity             <intent-filter >                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter> activity的一个配置信息 作用 在luncher(桌面)程序里面生成一个应用程序的图标 如果你把上面的配置信息给删除了,能够安装成功,但是不会在桌面上生成那个快捷方式 。就像windows安装软件的时间不创建快捷方式,其实它已经安装成功,并且存在于硬盘上只是你在桌面上无法直接打开。如何把别人的项目导进来?ctrl+H 搜索整个工程目录  选择file 搜索 这个错误说明它是权限被拒绝,就是没有权限的原因。03-09 14:32:16.114: ERROR/AndroidRuntime(798): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:110 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{44fc8cf8 798:cn.itcast.phone/10037} (pid=798, uid=10037) requires android.permission.CALL_PHONE03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.os.Parcel.readException(Parcel.java:1247)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.os.Parcel.readException(Parcel.java:1235)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1298)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.app.Activity.startActivityForResult(Activity.java:2817)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.app.Activity.startActivity(Activity.java:2923)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at cn.itcast.phone.MainActivity$MyButtonClickListener.onClick(MainActivity.java:40)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.view.View.performClick(View.java:2408)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.view.View$PerformClick.run(View.java:8816)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.os.Handler.handleCallback(Handler.java:587)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.os.Handler.dispatchMessage(Handler.java:92)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.os.Looper.loop(Looper.java:123)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at android.app.ActivityThread.main(ActivityThread.java:4627)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at java.lang.reflect.Method.invokeNative(Native Method)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at java.lang.reflect.Method.invoke(Method.java:521)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)03-09 14:32:16.114: ERROR/AndroidRuntime(798):     at dalvik.system.NativeStart.main(Native Method)    <uses-permission android:name="android.permission.CALL_PHONE"/>权限就是用来保护用户隐私的 ,因为如果一个项目中需要权限的话,在安装界面会有提示。为什么我们用豌豆和手机助手以及直接用开发工具项目部署不会出现这种情况,是因为它首先是把手机调整为USB调试模式,并且允许了未知来源的软件。第一,Log有五种模式。第二,tag通常与activity同名,并且是静态常量 。意图就是一个载体,它包含了动作和数据。intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));安卓中所有数据格式都是通过Uri对象类型来识别的。parse可以把一个文本的字符串转换成一个字符串对象。优化代码 :EditText edt = (EditText) findViewById(R.id.etnum);这句代码其实是十分费时的,所以写这些组件的时间把它放在成员变量上。--View是所有组件的老大,就相当于Object这个的东西。--点击事件有四种写法。其中回调是企业中用的最多的。--TextView也可以响应点击事件,不过要加一个属性配置。bt.setOnClickListener(this);public void onClick(View v) {switch (v.getId()) {//switch里面的函数是指传进来的变量。case R.id.call:edt = (EditText) findViewById(R.id.etnum);String number = edt.getText().toString();Log.i(tag, number);Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));startActivity(intent);break;}}企业中用的处理点击事件的方法,这样更加方便,因为如果特别多的按钮时间,你就利用选择可以非常方法的处理非常多的点击事件。不过它要实现那个OnClickListener接口。这就是回调,JAVA会自己处理,自动知道什么时间该调用哪个方法 ,因为被回调的方法都已经准备好了,只是系统决定在什么时间调用它,而不用我们决定。--清单配置点击事件:android:onClick="btn_click"public void btn_click(View v){//注意千万不要忘记参数,否则它就不知道是谁被点击了。edt = (EditText) findViewById(R.id.etnum);String number = edt.getText().toString();Log.i(tag, number);Intent intent = new Intent();intent.setAction(Intent.ACTION_CALL);intent.setData(Uri.parse("tel:"+number));startActivity(intent);}android:onClick="textView_click"android:clickable="true"public void textView_click(View v){//参数很有用。Log.i(tag, "文本被 点击 ");}--学会debug它。--真机如果不能够调试,加android:debuggable="true";---android工程的打包过程(见PPT21)一、其实是appt这个工具在起作用。步骤如下:1):它会所所有JAVA文件先转换成class文件,然后编译成dex文件,在这个过程中,会把所有的共有变量抽取出来(static String final),然后结合配置文件生成apk文件,它与zip是的模式是一样的,可以直接变换格式,在生成的过程中,会对AndroidManifest.xml进行加密。--上下文其实就是全局的一个对象 ,一个变量,所有编程中上下文都是这个东西。--SmsManager老的包里面已被废弃,新的可以支持GSM和WCDMA.android.telephony.SmsManager;这个是新的。--不记得权限怎么写了,就让它报错,然后看看是什么错误 。--一条短信的最大限度 ,divideMessage()的原理?看源码。多看源码 。这个写法要记着:private static SmsManager sInstance;//获得它的实例,如果是静态的都是这样搞的。public static SmsManager getDefault() {        if (sInstance == null) {            sInstance = new SmsManager();        }        return sInstance;    }---写SMS的遇到的问题1、SmsManager新老问题2、权限问题,通过报错可获得需要什么权限。3、长度限制问题。调试真实手机 1.安装驱动 htc nexus s LG 找适合你手机的驱动程序.豌豆夹 91手机程序LinearLayout  线性布局 ---所有的组件都是被一条直接给串起来,根据判断看看它是水平串还是垂直串. AbsoluteLayout 据对布局 被安卓的SDK给废弃掉,做屏幕适配非常麻烦,但是在游戏开发里面大量使用它 .qq斗地主 854*480 apk 800*480 apk RelativeLayout  相对布局  ---适配各种屏幕比较方便.FrameLayout  帧布局 类似div层,所有的帧布局都是从左上角开始的.每个控件相当于一个DIV,并且都是从左上角开始的. tablelayout 表格布局 安卓 px (pixels)像素      一般HVGA代表320x480像素,这个用的比较多。 dip或dp (device independent pixels)设备独立像素    这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。 sp (scaled pixels — best for text size)比例像素    主要处理字体的大小,可以根据系统的字体自适应。除了上面三个显示单位,下面还有几个不太常用: in (inches)英寸 mm (millimeters)毫米   pt (points)点,1/72英寸结论:为了适应不同分辨率,不同的像素密度,推荐使用dip ,文字使用sp。

更多相关文章

  1. Android(安卓)8.0系统Bug Only fullscreen opaque activities ca
  2. 把文件存放在SDCard
  3. android 命令行打包
  4. android Log4j学习笔记
  5. Android(安卓)SDK无法更新、谷歌无法打开问题的解决
  6. Android(安卓)Gradle plugin与Gradle 版本对应问题
  7. java.lang.UnsupportedClassVersionError: com/android/build/gr
  8. Cordova 3.x 基础(13) -- 为Android(安卓)APK签名
  9. 上传多张图片到服务器

随机推荐

  1. C#单例模式的实现以及性能对比的实例
  2. C#之FastSocket实战项目的示例分享
  3. .NET支付宝App支付接入的实例分析
  4. C#根据表格偶数与奇数加载不同颜色的实例
  5. C#中关于程序功能实现以及对代码选择的思
  6. 介绍asp.net MVC下使用rest的方法
  7. C#中的抽象类与接口的详解
  8. ASP.NET MVC 使用Bootstrap方法介绍
  9. Asp.net Core应用程序在Linux上部署的图
  10. .NetCore如何获取Json和Xml格式的配置信