【黑马Android】(01)android简介/工程目录结构/拨号器/四种点击事件/后台偷偷发短信
3G WCDMA(联通), CDMA2000(电信), TD-SCDMA(移动)
发微博, 查看高清图片, 小电影.
3.5G HSDPA, HSDPA+
4G TD-LTE 下载速度: 50Mb/s = 6MB/s 上传速度: 10Mb/s = 1.2MB/s
100Mb/s != 100MB/s
1 Byte = 8bit
100Mb/s = 12.5MB/s
android简介操作系统:
阿里云os, Ophone, MUI, 锤子.
android体系结构和虚拟机虚拟机的区别:
JVM: .java -- javac -- .class -- jar -- .jar
架构: 堆栈
DVM: .java -- javac -- .class -- dx.bat -- .dex
架构: 寄存器(cpu上一块高速的缓存)
第一个应用程序和adb常用命令android调试桥: adb命令使用
需要在系统环境遍历中path中追加adb.exe的完整路径
D:\IDE\adt-bundle-windows-x86-20130729\sdk\platform-tools
Adb shell 安装和卸载程序。
工程目录结构
src: 存放java代码
gen: 存放自动生成文件的. R.java 存放res文件夹下对应资源的id
project.properties: 指定当前工程采用的开发工具包的版本
libs: 当前工程所依赖的jar包.
assets: 放置一些程序所需要的媒体文件.
bin: 工程的编译目录. 存放一些编译时产生的临时文件和当前工程的.apk文件.
res(resources): 资源文件.
drawable: 存放程序所用的图片.
layout: 存放android的布局文件.
menu: 存放android的OptionsMenu菜单的布局.
values (应用程序所需要的数据. 会在R文件中生成id)
strings.xml 存放android字符串.
dimens.xml 存放屏幕适配所用到的尺寸.
style.xml 存放android下显示的样式.
values-sw600dp 7寸平板所对应的值
values-sw720dp-land 10寸平板所对应的值
values-v11 指定3.0版本以上的手机显示的样式.
values-v14 指定4.0版本以上的手机显示的样式.
AndroidManifest.xml: android应用程序的入口文件. 声明了android里边的组件. 和相关配置信息.
proguard-project.txt: 加密当前程序所使用.
打包安装过程打包安装过程(Run as Android Application ) :
1. 生成apk文件.
1). 生成.dex文件.
2). 资源索引表的生成resources.arsc.
3). 准备未编译文件.
4). 清单文件AndroidMenifest.xml文件转换成二进制.
5). 使用debug.keystore对整个应用程序进行打包签名.
2. 加载apk文件到模拟器中.
把apk文件加载到/data/local/tmp/xxx.apk
3. 安装应用程序.
1). 把/data/local/tmp/xxx.apk文件, 剪切/data/app/包名-1.apk
2). 在/data/data/文件夹下以包名创建一个文件夹, 用于存储当前程序的数据.
3). 在packages.xml和packages.list文件中分别添加一条记录.
RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" TextView android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" / EditText android:id="@+id/number" android:layout_width="match_parent" android:layout_height="wrap_content" android:inputType="number" android:layout_below="@id/title" / Button android:id="@+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/number" android:text="@string/callNumber" / /RelativeLayout
package com.itheima28.caller; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.widget.EditText; * @author andong * 程序刚运行就显示的界面 public class MainUI extends Activity { * 当界面刚被创建时回调此方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局. * 当拨打此号码的按钮被点击时触发此方法. * @param v public void call(View v) { System.out.println("拨打电话."); // 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作四种点击事件
?xml version="1.0" encoding="utf-8"? manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima28.caller" android:versionCode="1" android:versionName="1.0" uses-sdk android:minSdkVersion="9" android:targetSdkVersion="17" / !-- 添加拨打电话的权限 -- uses-permission android:name="android.permission.CALL_PHONE"/ application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" activity android:name="com.itheima28.caller.MainUI4" android:label="@string/app_name" intent-filter action android:name="android.intent.action.MAIN" / category android:name="android.intent.category.LAUNCHER" / /intent-filter /activity /application /manifest
package com.itheima28.caller; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; * @author andong * 程序刚运行就显示的界面 public class MainUI2 extends Activity { * 当界面刚被创建时回调此方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局.
// 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作
package com.itheima28.caller; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; * @author andong * 程序刚运行就显示的界面 public class MainUI3 extends Activity { * 当界面刚被创建时回调此方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局.
// 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作
package com.itheima28.caller; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; * @author andong * 程序刚运行就显示的界面 public class MainUI4 extends Activity implements OnClickListener { * 当界面刚被创建时回调此方法 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 必须执行此句代码. 执行父类的初始化操作. setContentView(R.layout.main); // 设置当前界面显示的布局.
// 1. 取出输入框中的号码 EditText etNumber = (EditText) findViewById(R.id.number); // 输入框对象 String number = etNumber.getText().toString(); // 将要拨打的号码 // 2. 根据号码拨打电话 Intent intent = new Intent(); // 创建一个意图 intent.setAction(Intent.ACTION_CALL); // 指定其动作为拨打电话 intent.setData(Uri.parse("tel:" + number)); // 指定将要拨出的号码 startActivity(intent); // 执行这个动作 @Override public void onClick(View v) { System.out.println("MainUI4 拨打号码.."); call();
后台偷偷发短信
package com.itheima28.qq; import android.os.Bundle; import android.os.SystemClock; import android.app.Activity; import android.telephony.SmsManager; import android.view.Menu; import android.view.Window; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 去除标题, 必须在setContentView 方法前调用 requestWindowFeature(Window.FEATURE_NO_TITLE); // 取出标题 setContentView(R.layout.activity_main);
SmsManager smsManager = SmsManager.getDefault(); // 短信管理器 smsManager.sendTextMessage( "18511619290", // 收件人的号码 null, // 短信中心号码 "今晚小树林, 不见不散.", null, // 如果发送成功, 回调此广播, 通知我们. null); // 当对方接收成功, 回调此广播. }).start(); @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; }
相关文章
- Android 浏览器分享到APP「建议收藏」
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android定时器取消,Android定时器崩溃取消
- Android resource linking failed_android:authorities
- Android preference_android studio preview
- Android 项目开发填坑记 - 谷歌商店上架被拒 Apps On Device
- 使用Android模拟器预览调试程序[通俗易懂]
- Android studio学习笔记:adb被系统空闲进程占用了怎么办?
- Android六大布局
- 【Android 电量优化】JobScheduler 相关源码分析 ( JobSchedulerService 源码分析 | Android 源码在线网址推荐 )
- 【Android 逆向】Android 逆向基本概念 ( 定位内存中的修改点 | 基址寻址法 | 搜索定位法 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ③ ( 执行 compile-ffmpeg.sh clean 命令 | 下载并配置 android-ndk-r10e )
- Android Go让上古神机崛起真正愿景或是收割功能机详解手机开发
- [android] 手机卫士手机定位的原理详解手机开发
- Android开发艺术探索(三)——View的事件体系详解手机开发
- Android中android:visibility的3中属性的剖析详解手机开发
- 使用Android实现连接MySQL数据库:实现快速数据交互与管理(android连接mysql数据库)
- Connecting Android to Oracle: The Ultimate Guide for Seamless Integration.(android连接oracle)
- Android源码学习之观察者模式应用及优点介绍
- android获取联系人示例分享