您的位置:首页 > 移动开发 > Android开发

Android核心基础1

2014-11-23 17:27 274 查看
通信技术:

1G 模拟制式只能进行语音通话.

2G GSM, CDMA收发短信和邮件.

2.5G GPRS, EDGE访问wap网络数据.(图片, 壁纸, 文字信息)

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

bit

1 Byte = 8bit

100Mb/s = 12.5MB/s

操作系统:

阿里云os, Ophone, MUI, 锤子.

虚拟机的区别:

JVM: .java --> javac --> .class --> jar --> .jar

架构: 堆栈

DVM: .java --> javac --> .class --> dx.bat --> .dex

架构: 寄存器(cpu上一块高速的缓存)

下载sdk版本:

在hosts文件中追加以下信息:

74.125.113.121 developer.android.com

203.208.46.146 dl.google.com

203.208.46.146 dl-ssl.google.com

adb android debug bridge android调试桥

模拟器启动失败:

需要配置ANDROID_SDK_HOME

指定一个非中文, 并且没有空格的文件夹

加速器安装错误









android调试桥: adb命令使用

需要在系统环境遍历中path中追加adb.exe的完整路径

D:\IDE\adt-bundle-windows-x86-20130729\sdk\platform-tools

常见命令操作(需要配置adb.exe的环境变量)

adb devices 列出所有的设备

adb start-server 开启adb服务

adb kill-server 关闭adb服务

adb logcat 查看Log

adb shell 挂载到Linux的空间

adb install <应用程序(加扩展名)> 安装应用程序

adb –s <模拟器名称> install <应用程序(加扩展名)> 安装应用到指定模拟器

adb uninstall <程序包名>

adb pull <remote> <local>

adb push <local> <remote>

emulator –avd <模拟器名称>

ctrl + F11 横竖屏的切换

工程目录结构:

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文件中分别添加一条记录.

显示文本的控件 TextView

输入框控件 EditText

按钮控件 Button

MainUI.java

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);	// 执行这个动作
}
}


MainUI2.java

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);		// 设置当前界面显示的布局.

Button btnCall = (Button) findViewById(R.id.btn_call);

btnCall.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
System.out.println("MainUI2 拨打电话.");
call();
}
});
}

/**
* 拨打电话的业务方法
*/
private void call() {

// 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);	// 执行这个动作
}
}


MainUI3.java

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);		// 设置当前界面显示的布局.

Button btnCall = (Button) findViewById(R.id.btn_call);

btnCall.setOnClickListener(new MyOnClickListener());
}

class MyOnClickListener implements OnClickListener {

@Override
public void onClick(View v) {
System.out.println("MainUI3 拨打号码..");
call();
}
}

/**
* 拨打电话的业务方法
*/
private void call() {

// 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);	// 执行这个动作
}
}


MainUI4.java

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);		// 设置当前界面显示的布局.

Button btnCall = (Button) findViewById(R.id.btn_call);

btnCall.setOnClickListener(this);
}

//	class MyOnClickListener implements OnClickListener {
//
//		@Override
//		public void onClick(View v) {
//			System.out.println("MainUI3 拨打号码..");
//			call();
//		}
//	}

/**
* 拨打电话的业务方法
*/
private void call() {

// 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();
}
}


main.xml

<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.smssender;

import android.os.Bundle;
import android.app.Activity;
import android.telephony.SmsManager;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity implements OnClickListener {

private EditText etNumber;
private EditText etContent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

etNumber = (EditText) findViewById(R.id.et_number);
etContent = (EditText) findViewById(R.id.et_content);

Button button = (Button) findViewById(R.id.btn_send);
button.setOnClickListener(this);
}

@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;
}

@Override
public void onClick(View v) {
// 号码
String number = etNumber.getText().toString();
// 内容
String content = etContent.getText().toString();

SmsManager smsManager = SmsManager.getDefault();

smsManager.sendTextMessage(
number,	// 收件人
null, 	// 短信中心号码
content, // 内容
null,
null);
}

}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<TextView
android:id="@+id/tv_number"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="请输入手机号" />

<EditText
android:id="@+id/et_number"
android:inputType="number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/tv_number" />

<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/et_number"
android:text="请输入短信内容" />

<EditText
android:id="@+id/et_content"
android:layout_width="match_parent"
android:layout_height="200px"
android:gravity="top"
android:layout_below="@id/tv_content" />

<Button
android:id="@+id/btn_send"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/et_content"
android:text="发送短信" />

</RelativeLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: