android

来源:互联网 发布:学白话的软件 编辑:程序博客网 时间:2024/04/28 17:31

google公司收购的:07 基于linux内核的手机操作系统,开源平台,自行开发一套java虚拟机(Dalvik虚拟机,not J2ME)。
        SDK and NDK(native develop kit, C++库)

Android开发环境: Eclipse + ADT(Android Development Tool)  

安装顺序:JRE(JDK)-->eclipse-->plugin ADT--->ADK
1. jdk-6u24-windows-i586.exe     jdk_install
 设置环境变量 我的电脑-》内容-》进阶-》环境变量 修改Path, 增加 分号 ;C:\Program Files\Java\jdk1.6.0_24\bin
  Classpath 增加
 设置完成在window命令行打个java看是否成功
2. eclipse-SDK-3.7.2-win32.zip   eclispe_install
3. 安装 android SDK tools
 installer_r18-windows.exe // 这个是SDK管理器,用它来下载并管理 各个android sdk版本
4. 安装插件 ADT android 开发工具
 eclipse->help->install new->add->URL : https://dl-ssl.google.com/android/eclipse/
5. 安装完插件以及SDK后,
 eclipse->windows->property->android->Sdk location: C:\Program Files\Android\android-sdk
 eclipse有两个图标:SDK manager and virtual machine


怎么在AVD模拟器中安装一个软件?
 C:\Program Files\Android\android-sdk\platform-tools>adb install Game_Machinarium.apk.zip
  76 KB/s (8956916 bytes in 113.621s)
         pkg: /data/local/tmp/Game_Machinarium.apk.zip
 Success 
 
 卸载
 C:\Program Files\Android\android-sdk\platform-tools>adb shell
 # cd /data/app
 cd /data/app
 # ls
 ls
 air.net.machinarium.Machinarium-1.apk
 com.dld-1.apk
 # rm xx.apk
 
 android控制台下命令

ip a , dhcpd eth0 setprop dns.   PC'dns
adb connect android'ip
 
把源代码加到工程中
 build path-->java build path-->library-->android4.0.3-->adroid.jar-->source attachment-->指向源代码
 
 画面可以转90度吗
        到manifest文件中去改 MainActivity的属性
         android:screenOrientation="landscape" 
 
 
1 Android平台开发环境
1.1 Android平台的运行环境、模拟器使用。
1.2 Android开发SDK简介,Eclipse插件使用。
1.3 Android虚拟设备(AVD)
1.4 日志/Logcat
1.5 调试器 DDMS
 Activity + Service = APK  细粒度的行为和服务组成了android应用
  APK配置文件:manifest.xml == activity, service, sdk version
  界面: res/layout
  本地存储:ContentProvider数据存取类, Java SE文件存取, SQLite轻量数据库
  服务以及进程间的通信:实现服务,继承Service, onCreate本地  onBind远程  
  动画:帧动画(动画片),布局动画(ppt),视图动画
 用eclipse建立一个android项目后,资源文件要经过编译后(),才能编译android程序。
  gen/com.dld/R.java
 Android 的主要调试工具adb(Android debuging bridge),ddms是一个在adb基础上的一个图形化工具。
  打开elipse->Window->Open perspective->Others->DDMS
  adb(client)---socket--->adb(server)----adbd(Android上,deamon)---VM debugger
  IDE debugger-->DDMS-->adb-->UP
 
  
2 Android 开发之基本原理
2.1 "Android 项目结构
2.2 "生命周期/运行原理
2.3 "程序资源/Resource
2.4 "签名/打包/部署/发布
2.5 "像素/屏幕/分辨率
2.6 "Manifest/Permission
2.7 "认识框架结构
 框架和库:
  android体系结构 (linux kernel(driver)-->library(VM)--->framework(Activity manager)--->application)
  
 Android有四大组件四喜丸子:Activity、Service、Broadcast Receiver、Content Provider。
 组件的配置信息在我看来主要包含两个方面,一部分是描述如何认知。另一部分是运行相关的信息。

 Activity的生命周期:
  从视觉效果来看,一个Activity占据当前的窗口,响应所有窗口事件,具备有控件,菜单等界面元素。
  从内部逻辑来看,Activity需要为了保持各个界面状态,需要做很多持久化的事情,还需要妥善管理生命周期,和一些转跳逻辑。
  对于开发者而言,就需要派生一个Activity的子类,然后埋头苦干上述事情。
  onCreate(初始化)-->onStart(显示完毕)-->onResume(可以点击后)-->onPause(切换前的保存)-->onStop(完全被覆盖后)-->onDestroy
  游戏到后台后可能被系统回收,需要备份状态
   是通过onSaveInstanceState函数把需要维系的状态信息(在默认的状态下,系统控件都会自己保存相关的状态信息,比如TextView,会保存当前的Text信息,这都不需要开发人员担心...),
   写入到Bundle对象,然后在onRestoreInstanceState函数中读取并恢复相关信息(onCreate,onStart,也都可以处理...)。

 意图:intent(动作action, data数据)
  在Android中,如果你需要选个图拍个片,只需要构造一个描述你此项意愿的Intent,发送出去,
   系统会帮你选择一个能够处理该项业务的组件来满足你的需求,而不再需要纠结在具体的接口和实现上
  action (MAIN, VIEW, PICK,EDIT)
  data (URI)
   用在内部通信中,可能描述是Content Provider用的形如content://xxxx这样的东东,抑或是外部的一个形如tel://xxxx这样的链接
  type(类别,eg.txt文件)
  category(条件) 
  Extras(传参),它是一个Bundle类的对象,有一组可序列化的key/value对组成。 
  Flags是一个整形数,有一些列的标志位构成,这些标志,是用来指明运行模式的。
   Implicit Intents 我们企图用Action,Data/Type,Category去描述一个意图
    startActivity(myIntent)-->activity管理器-->package管理器-->系统注册的intent-filter(比较找到后返回相应的activity)
   Explicit Intents Component就是类名,完整的,形如com.xxxxx.xxxx
    直接找到该组件处理
  
 Service的生命周期:
  相同点:它们通常都是后台长时间运行,接受上层指令,完成相关事务的模块。
  特性:其进程模型都是可以配置的,调用方和发布方都可以有权利来选择是把这个组件运行在同一个进程下,还是不同的进程下。
   如果一个Service,是有期望运行在于调用方不同进程的时候,就需要利用Android提供的RPC机制,为其部署一套进程间通信的策略。
  onCreate onStart onDestory onBind
  start stop bind unbind
  
 BroadcastReceiver
  每个Broadcast Receiver都可以接收一种或若干种Intent作为触发事件
   当发生这样事件的时候,系统会负责唤醒或传递消息到该Broadcast Receiver,任其处置。
   在此之前和这以后,Broadcast Receiver是否在运行都变得不重要了,及其绿色环保。
  冷插拔,(配置文件),系统会负责在相关事件发生的时候及时通知到该Broadcast Receiver,
   这种模式适合于这样的场景。某事件方式 -> 通知Broadcast -> 启动相关处理应用。比如,监听来电、邮件、短信之类的,都隶属于这种模式。
  热插拔,(程序定义)通常是在OnResume事件中通过registerReceiver进行注册,在OnPause等事件中反注册,
   通过这种方式使其能够在运行期间保持对相关事件的关注。其模式可以归结为:启动应用 -> 监听事件 -> 发生时进行处理。
  发送这有两类,
   一个就是系统本身,自定义的应用可以放出Broadcast消息,通过的接口可以是Context.sendBroadcast,抑或是Context.sendOrderedBroadcast(优先级)。
 Content Provider,
  这就是Android提供的第三方应用数据的访问方案。
  Content Provider为了保持更多的灵活性,本身只提供了同步调用的接口,
  而由于异步对Content Provider进行增删改查是一个常做操作,
   Android通过AsyncQueryHandler对象,提供了异步接口。这是一个Handler的子类,
    开发人员可以调用startXXX方法发起操作,通过派生onXXXComplete方法,等待执行完毕后的回调,从而完成整个异步调用的流程,十分的简约明了。

  
 Task,简单的说,就是一组以栈的模式聚集在一起的Activity组件集合。
  在Android中,每一个Activity的Task模式,都是可以由Activity提供方(通过配置文件...)和Activity使用方(通过Intent中的flag信息...)进行配置和选择。
  Task栈的模式,配置的主要方向有两个:
   一则是破坏已有栈的进出规则,或样式;
   另一则是开辟新Task栈完成本应在同一Task栈中完成的任务。
  <activity>中的launchMode属性
   标准,singleTop(顶端多个重复的但只一个), singleTask(页面的多个Tab), singleInstanse(被大家调用)
 进程   
 通过配置<application>的process属性,将不同的相关应用,塞进一个进程,使得它们可以同生共死。
 
 Android的线程,
  也是通过派生Java的Thread对象,实现Run方法来实现的。
  但当用户需要跑一个具有消息循环的线程的时候,Android有更好的支持,来自于Handler和Looper。
   Handler做的是消息的传送和分发,派生其handleMessage函数,可以处理各种收到的消息,和win开发无异。
   Looper的任务,则是构造循环,等候退出或其他消息的来临。在Looper的SDK页面,有一个消息循环线程实现的标准范例,
  当然,更为标准的方式也许是构造一个HandlerThread线程,将它的Looper传递给Handler。
  handle.post(Runabble
  unbuiler)
  handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程)

activity 插入 /persons values
 provider 判断这个URI,insert table

 

视频
 drawable-hdpi 高分辨率的图片
 help文档
 android:theme="@android:style/Theme.Dialog"  //dialog Activity
 linearLayout tableLayout relativeLayout
  padding 边框  marginleft 外边框
 alt + /  联想
 Environment.getExternalStorageDirectory().getAbsolutePath();  // 得到SDCARD路径
 mp = MediaPlay.create(this, (SDcardDir)uri);  // 播放MP3
  mp.setLooping(false);
  mp.start();
  mp.pause(); 
  mp.stop();
  mp.release();
 Queue<long> times = new LinkedList<long>();
 InputStream-->InputStreamReader-->BufferReader  //readline
 

刘海山(1964006407)  下午 04:08:53
https://market.android.com/
http://market.android.com/publish/
上传应用程序:https://market.android.com/publish/Home

 

原创粉丝点击