当前位置: 编程技术>移动开发
本页文章导读:
▪实现带上拉跟下拉刷新功能的ListView 实现带上拉和下拉刷新功能的ListView
package com.test.test;
import java.util.ArrayList;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import and.........
▪ 手机授命 手机指令
*#06#(显示IMEI号码) *#1234#(显示当前固件) * 2767 * 4387264636#(要显示产品代码) * IMEI号*#272#*(显示/更改伪代码) 或*#272#* * HHMM *#12580 * 369.........
▪ 编码轨范机制设计与分析 编码规范机制设计与分析
1.执行的代码中间绝对不会出现具体的数值。因为:
未来只要有可能发生变化的数值资源存入res/XML,实现代码外的修改。
铁定不会变的数值,用大写的单词.........
[1]实现带上拉跟下拉刷新功能的ListView
来源: 互联网 发布时间: 2014-02-18
实现带上拉和下拉刷新功能的ListView
package com.test.test;
import java.util.ArrayList;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.test.test.CustomListView.OnAddFootListener;
import com.test.test.CustomListView.OnFootLoadingListener;
import com.test.test.CustomListView.OnRefreshListner;
public class TestActivity extends Activity {
private CustomListView listview;
private ArrayList<String> data;
private BaseAdapter adapter;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
init();
setListener();
}
private void init(){
data = new ArrayList<String>();
//虚拟一些数据
data.add("a");
data.add("b");
data.add("c");
data.add("e");
data.add("f");
data.add("g");
data.add("h");
data.add("i");
data.add("j");
data.add("k");
data.add("L");
data.add("M");
data.add("L");
data.add("N");
data.add("O");
data.add("P");
data.add("Q");
listview = (CustomListView) findViewById(R.id.listview);
adapter = new BaseAdapter(){
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView textView = new TextView(getApplicationContext());
textView.setHeight(100);
textView.setTextSize(20);
textView.setGravity(Gravity.CENTER);
textView.setBackgroundColor(0x66666666);
textView.setTextColor(0xaaffffff);
textView.setText(data.get(position));
return textView;
}
};
listview.setAdapter(adapter);
}
private void setListener(){
listview.setOnRefreshListner(new OnRefreshListner() {
@Override
public void onRefresh() {
new AsyncTask<Void, Void, ArrayList<String>>(){
@Override
protected ArrayList<String> doInBackground(Void... params) {
try {
//模拟从服务器获取数据的过程
Thread.sleep(1500);
} catch (InterruptedException e) {
e.printStackTrace();
}
ArrayList<String> virtualData = new ArrayList<String>();
virtualData.add("Head刷新后的新数据1");
virtualData.add("Head刷新后的新数据2");
virtualData.add("Head刷新后的新数据3");
virtualData.add("Head刷新后的新数据4");
virtualData.add("Head刷新后的新数据5");
virtualData.add("Head刷新后的新数据6");
return virtualData;
}
//更新UI的方法,系统自动实现
@Override
protected void onPostExecute(ArrayList<String> result) {
data.addAll(0,result);//注意是往前添加数据
adapter.notifyDataSetChanged();
listview.onRefreshComplete();//完成下拉刷新,这个方法要调用
super.onPostExecute(result);
}
}.execute();
}
});
//创建FootView
final View footer = View.inflate(TestActivity.this, R.layout.footer, null);
listview.setOnAddFootListener(new OnAddFootListener() {
@Override
public void addFoot() {
listview.addFooterView(footer);
}
});
listview.setOnFootLoadingListener(new OnFootLoadingListener() {
@Override
public void onFootLoading() {
new AsyncTask<Void, Void, ArrayList<String>>(){
@Override
protected ArrayList<String> doInBackground(Void... params) {
try {
//模拟从服务器获取数据的过程
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
ArrayList<String> virtualData = new ArrayList<String>();
virtualData.add("Foot刷新后的新数据1");
virtualData.add("Foot刷新后的新数据2");
virtualData.add("Foot刷新后的新数据3");
virtualData.add("Foot刷新后的新数据4");
virtualData.add("Foot刷新后的新数据5");
virtualData.add("Foot刷新后的新数据6");
return virtualData;
}
//在doInBackground后面执行
@Override
protected void onPostExecute(ArrayList<String> result) {
data.addAll(result);//这个是往后添加数据
adapter.notifyDataSetChanged();
listview.onFootLoadingComplete();//完成上拉刷新,就是底部加载完毕,这个方法要调用
//移除footer,这个动作不能少
listview.removeFooterView(footer);
super.onPostExecute(result);
}
}.execute();
}
});
}
}
package com.test.test;
import java.util.Date;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.LinearInterpolator;
import android.view.animation.RotateAnimation;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.ImageView;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
/**
* 支持下拉刷新和上拉刷新
* 可自定义上啦和下拉过程的操作,推荐使用AsyncTask
* 需自定义Foot的View,然后只需在addFoot方法中添加即可
* @author lxj
*
*/
public class CustomListView extends ListView implements OnScrollListener {
private static final int DONE = 0;
private static final int PULL_TO_REFRESH = 1;
private static final int RELEASE_TO_REFRESH = 2;
private static final int REFRESHING = 3;
private static final float RATIO = 3;// 用来设置实际间距和上边距之间的比例
private int state;// 当前下拉刷新的状态
private int firstVisibleIndex;// 在listview中第一个可以看见的item
private View headView;
private ImageView headArrow;
private ProgressBar progressBar;
private TextView headTitle;
private TextView headLastUpdate;
private int headContentWidth;
private int headContentHeight;
private Animation animation;
private Animation reverseAnimation;
private OnRefreshListner refreshListner;// 刷新监听器
private boolean isRefreshable;
private boolean isRecored = false;// 用来记录第一次按下坐标点,在整个滑动的过程中 只记录一次
private float startY;
private boolean isBack = false;// 是从 松开刷新状态 来到的 下拉刷新状态
public CustomListView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
private void init(Context context) {
// listview 设置滑动时缓冲背景色
setCacheColorHint(0x00000000);
headView = View.inflate(context, R.layout.head, null);
headArrow = (ImageView) headView.findViewById(R.id.head_arrow);
progressBar = (ProgressBar) headView.findViewById(R.id.progressbar);
headTitle = (TextView) headView.findViewById(R.id.head_title);
headLastUpdate = (TextView) headView
.findViewById(R.id.head_last_update);
headArrow.setMinimumWidth(50);
headArrow.setMinimumHeight(70);
MeasureView(headView);
headContentWidth = headView.getMeasuredWidth();
headContentHeight = headView.getMeasuredHeight();
headView.setPadding(0, -1*headContentHeight, 0, 0);
// 为listView加入顶部View
addHeaderView(headView);
setOnScrollListener(this);
animation = new RotateAnimation(-180, 0, Animation.RELATIVE_TO_SELF,
0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
animation.setDuration(250);
animation.setFillAfter(true);// 设定动画结束时,停留在动画结束位置 (保留动画效果)
animation.setInterpolator(new LinearInterpolator());// 匀速变化
reverseAnimation = new RotateAnimation(0, -180,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,
0.5f);
reverseAnimation.setDuration(200);
reverseAnimation.setFillAfter(true);// 设定动画结束时,停留在动画结束位置 (保留动画效果)
reverseAnimation.setInterpolator(new LinearInterpolator());// 匀速变化
// 设置当前headView的状态
state = DONE;
// 设置当前下拉刷新是否可用
isRefreshable = false;
}
/**
* 测量headView的 宽高
*
* @param child
*/
private void MeasureView(View child) {
ViewGroup.LayoutParams lp = child.getLayoutParams();
if (null == lp) {
lp = new ViewGroup.LayoutParams(LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT);
}
int measureChildWidth = ViewGroup.getChildMeasureSpec(0, 0, lp.width);
int measureChildHeight;
if (lp.height > 0) {
measureChildHeight = MeasureSpec.makeMeasureSpec(lp.height,
MeasureSpec.EXACTLY);
} else {
measureChildHeight = MeasureSpec.makeMeasureSpec(0,
MeasureSpec.UNSPECIFIED);
}
child.measure(measureChildWidth, measureChildHeight);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
if (firstVisibleIndex == 0 && !isRecored) {
startY = event.getY();
isRecored = true;
}
break;
case MotionEvent.ACTION_MOVE:
float tempY = event.getY();
if (firstVisibleIndex == 0 && !isRecored) {
startY = tempY;
isRecored = true;
}
if (state != REFRESHING) {
if (state == PULL_TO_REFRESH) {
// 向下拉了 从下拉刷新的状态 来到 松开刷新的状态
if ((tempY - startY) / RATIO >= headContentHeight
&& (tempY - startY) > 0) {
state = RELEASE_TO_REFRESH;
changeHeadViewOfState();
}
// 向上推了 从下拉刷新的状态 来到 刷新完成的状态
else if ((tempY - startY) <= 0) {
state = DONE;
changeHeadViewOfState();
}
} else if (state == RELEASE_TO_REFRESH) {
// 向上推了 还没有完全将HEADVIEW 隐藏掉(可以看到一部分)
// 从松开刷新的状态 来到 下拉刷新的状态
if ((tempY - startY) / RATIO < headContentHeight
&& (tempY - startY) > 0) {
state = PULL_TO_REFRESH;
changeHeadViewOfState();
isBack = true;
}
// 向上推了 一下子推到了最上面 从松开刷新的状态 来到 刷新完成的状态 (数据不刷新的)
else if ((tempY - startY) <= 0) {
state = DONE;
changeHeadViewOfState();
}
} else if (state == DONE) {
// 刷新完成的状态 来到 下拉刷新的状态
if ((tempY - startY) > 0) {
state = PULL_TO_REFRESH;
changeHeadViewOfState();
}
}
if (state == PULL_TO_REFRESH) {
headView.setPadding(
0,
(int) ((tempY - startY) / RATIO - headContentHeight),
0, 0);
}
if (state == RELEASE_TO_REFRESH) {
headView.setPadding(
0,
(int) ((tempY - startY) / RATIO - headContentHeight),
0, 0);
}
}
break;
case MotionEvent.ACTION_UP:
if (state != REFRESHING) {
if (state == PULL_TO_REFRESH) {
// 松手
state = DONE;
changeHeadViewOfState();
}
else if (state == RELEASE_TO_REFRESH) {
// 松手
state = REFRESHING;
changeHeadViewOfState();
// 执行数据刷新方法
onRefresh();
}
}
isRecored = false;
isBack = false;
break;
}
return super.onTouchEvent(event);
}
/**
* 执行下拉刷新
*/
private void onRefresh() {
if (refreshListner != null) {
refreshListner.onRefresh();
}
}
/**
* HeadView的状态变化效果
*/
private void changeHeadViewOfState() {
//
switch (state) {
case PULL_TO_REFRESH:
headArrow.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
headTitle.setVisibility(View.VISIBLE);
headLastUpdate.setVisibility(View.VISIBLE);
headArrow.clearAnimation();
headTitle.setText("下拉可以刷新");
//由 松开刷新 到 下拉刷新
if(isBack){
headArrow.startAnimation(animation);
isBack = false;
}
break;
case RELEASE_TO_REFRESH:
headArrow.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
headTitle.setVisibility(View.VISIBLE);
headLastUpdate.setVisibility(View.VISIBLE);
headArrow.clearAnimation();
headArrow.startAnimation(reverseAnimation);
headTitle.setText("松开可以刷新");
break;
case REFRESHING:
headArrow.setVisibility(View.GONE);
progressBar.setVisibility(View.VISIBLE);
headTitle.setVisibility(View.VISIBLE);
headLastUpdate.setVisibility(View.VISIBLE);
headArrow.clearAnimation();
headTitle.setText("正在刷新...");
headView.setPadding(0, 0, 0, 0);
break;
case DONE:
headArrow.setVisibility(View.VISIBLE);
progressBar.setVisibility(View.GONE);
headTitle.setVisibility(View.VISIBLE);
headLastUpdate.setVisibility(View.VISIBLE);
headArrow.clearAnimation();
headTitle.setText("下拉可以刷新");
headView.setPadding(0, -1 * headContentHeight, 0, 0);
break;
}
}
private int lastPos;//最后一个可见的item的位置
private int count;//item总数,注意不是当前可见的item总数
private boolean hasFoot = false;//是否有了Foot
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
firstVisibleIndex = firstVisibleItem;
lastPos = getLastVisiblePosition();
count = totalItemCount;
//因为刚进入的时候,lastPos=-1,count=0,这个时候不能让它执行onAddFoot方法
if(lastPos==count-1 && !hasFoot && lastPos != -1){
hasFoot = true;
onAddFoot();
Log.d("addFoot================","执行添加Foot....");
}
Log.d("count================", count+"");
Log.d("lastPos================", lastPos+"");
}
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
if(isFootLoading)
return;
if(hasFoot && scrollState==SCROLL_STATE_IDLE){
isFootLoading = true;
onFootLoading();
}
}
/**
* 设置下拉刷新监听
*
* @param listener
*/
public void setOnRefreshListner(OnRefreshListner listener) {
// 设置下拉刷新可用
isRefreshable = true;
refreshListner = listener;
}
//执行底部加载
public void onFootLoading(){
if(footLoadingListener!=null && isFootLoading)
footLoadingListener.onFootLoading();
}
public void setOnAddFootListener(OnAddFootListener addFootListener){
onAddFootListener = addFootListener;
}
//执行添加foot
public void onAddFoot(){
if(onAddFootListener!=null && hasFoot)
onAddFootListener.addFoot();
}
//是否添加Foot的监听器,如果写在OnFootLoadingListener中会有延迟,效果不好
//应该是先进入添加Foot的状态,再进入FootLoading的状态
public OnAddFootListener onAddFootListener;
//是否进入从底部加载数据的状态的监听器
public OnFootLoadingListener footLoadingListener;
//正在加载底部数据
private boolean isFootLoading = false;
public void setOnFootLoadingListener(OnFootLoadingListener footLoading){
footLoadingListener = footLoading;
}
/**
* 下拉刷新监听器
* @author lxj
*
*/
public interface OnRefreshListner {
/**
* 下拉刷新的时候,在这里执行获取数据的过程
*/
void onRefresh();
}
/**
* 上拉刷新监听器
* @author lxj
*
*/
public interface OnFootLoadingListener{
/**
* 这里是执行后台获取数据的过程
*/
void onFootLoading();
}
/**
* 添加Foot的监听器
* @author lxj
*
*/
public interface OnAddFootListener{
/**
* 这里是用户addFootView的操作
*/
void addFoot();
}
/**
* 底部数据加载完成,用户需要加入一个removeFootView的操作
*/
public void onFootLoadingComplete(){
hasFoot = false;
isFootLoading = false;
}
/**
* 上拉刷新完成时 所执行的操作,更改状态,隐藏head
*/
public void onRefreshComplete() {
state = DONE;
changeHeadViewOfState();
headLastUpdate.setText("最后刷新时间: " + new Date().toLocaleString());
}
@Override
public void setAdapter(ListAdapter adapter) {
headLastUpdate.setText("最后刷新时间: " + new Date().toLocaleString());
super.setAdapter(adapter);
}
}
footer.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center" >
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="10dip"
android:text="正在加载中..."
android:textSize="20sp"/>
</LinearLayout>
head.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="30dp" >
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true" >
<ImageView
android:id="@+id/head_arrow"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
/>
<ProgressBar
android:id="@+id/progressbar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone" />
</FrameLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:gravity="center_horizontal"
android:orientation="vertical" >
<TextView
android:id="@+id/head_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="下拉可以刷新"
android:textColor="#666666"
android:textSize="20sp" />
<TextView
android:id="@+id/head_last_update"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:text="最后更新时间:"
android:textColor="#666666"
android:textSize="10sp" />
</LinearLayout>
</RelativeLayout>
</LinearLayout>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.test.test.CustomListView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/listview" />
</LinearLayout>
[2] 手机授命
来源: 互联网 发布时间: 2014-02-18
手机指令
*#06#(显示IMEI号码)
*#1234#(显示当前固件)
* 2767 * 4387264636#(要显示产品代码)
* IMEI号*#272#*(显示/更改伪代码)
或*#272#* * HHMM
*#12580 * 369#(软件&硬件信息)
*#44336#(软件版本信息)
复位:
*#*#7780#*#*或*#7780#(厂软复位)
* 2767 * 3855#(工厂硬复位的ROM固件默认设置)
固件工具:
*#2663#(固件更新)
*#34971539#(相机固件更新)
*#7412365#(相机固件菜单)
或*#*#34971539#*#*
*#03#(NAND快闪记忆体的S / N)的
通用测试/调试:
*#0 *#(综合测试模式)
*#*#4636#*#*(诊断和模式一般设置)
*#*#197328640#*#*(服务模式下的主菜单)
*#7353#(快速测试菜单)
无线:
*#232337#(蓝牙地址)
*#232331#(蓝牙测试模式)
*#232338#(无线局域网MAC地址)
*#232339#(WLAN测试模式)
*#526#(无线局域网工程模式)
*#528#(无线局域网工程模式)
全球定位系统:
*#1575#(GPS控制菜单)
*#*#1472365 *#*#(GPS测试设置)
传感器:
*#0588#(接近传感器测试模式)
*#0589#(光感应器测试模式)
音频:
*#0673#(音频测试模式)
*#0283#(音频回传控制)
*#0289#(旋律测试模式)
按钮:
*#7594#(重映射关机以结束通话)
电池:
*#0228#(电池状态:容量,电压,温度)
其他测试/调试:
*#32489#(通话加密信息)
*#0842#(抑振电机测试模式)
*#0782#(实时时钟测试)
*#2263#(射频波段选择)
*#9090#(诊断配置)
*#7284#(I2C模式的USB控制)
*#872564#(记录的USB控制)
*#4238378#(GCF的配置)
*#3214789650#(磅测试模式)
*#745#(RIL的转储菜单)
*#746#(调试转储菜单)
*#9900#(系统转储模式)
*#273283 * 255 * 3282 *#(数据创建菜单)
*#273283 * 255 * 663282 *#(数据创建SD卡)
*#3282 * 727336 *#(资料使用情况)
*#80#(未知)
*#07#(测试历史)
*#3214789#(GCF的模式状态)
*#272886#(自动应答选择)
*#8736364#(OTA更新菜单)
*#301279#(HSDPA / HSUPA的控制菜单)
* 2767 * 4387264636#(出卖短信/ PCODE观点)
*#7465625#(查看手机锁定状态)
* 7465625 * 638 *#(配置网络锁定的MCC /跨国公司)
#7465625 * 638 *#(插入网络锁密码)
* 7465625 * 782 *#(配置网络锁定新型干法)
#7465625 * 782 *#(插入Partitial网络锁定密码)
* 7465625 * 77 *#(插入网络锁定密钥号码SP法)
#7465625 * 77 *#(插入操作锁密码)
* 7465625 * 27 *#(插入网络锁定密钥号码)
#7465625 * 27 *#(插入内容提供商密码)
谨慎使用!!
1.出厂日期查询方法:
进入拨号输入 *#197328640# 进工程模式;
点菜单键再点Key Input输入值2;
再点菜单键点Key Input输入值2;
再点菜单键点Key Input输入值4;
就可以看到cal date:显示出厂日期。
2.看通话时间:
*#*#4636#*#* 这是看通话时间的 在1分钟以内才是正常的
3.测试有无锁三键:
音量下键+HOME键+电源键,如果能出现机器人挖煤的动画,就是无锁三键,反之就是锁三键.
4.测试有无网络锁
*#7465625# 这是看是不是锁机 只要是OFF就是正常,如果第二项“network lock”值为"disable"表示无网络锁,值为"enable"表示有锁。
5.识别机器的原产地
在待机状态下,点击拨号键
输入: *#272*串号#,然后进入产地
6.屏幕检测:
*#0*# 工程测试 买机必测
第一行 三个原色测试
第二行 1声音 2振动 3亮度降低
第三行 1照相 2磁传感器 3触摸屏
第四行 1休眠模式 2重力感应
里面有“LCD TEST",按“RED”全屏显红色,按“green” 全屏显绿色,按“blue”显蓝色,如要返回测试菜单,请按中间的确认键,退出按挂机键。
7.IMEI 码检验:
输入 *#06# ,查看手机内存中的IMEI 码,记住这个号码,然后输入 *2767*3855# 进行i900码片复位,手机会自动重启,
最后再输入 *#06# ,查看这个IMEI码有没有改变,如果这个号码与手机背贴、外包装盒上的 IMEI 码一致,且型号核准号码与手机型号一致 ,
就证明是原厂正宗货。如果不一致,或者变成了一串乱码,则证明该手机要么是水改机,要么是翻新机。如果指令不被执行,则说明码片复位功能已被JS 屏蔽掉了。切记:此操作相当于硬启手机
*#06#(显示IMEI号码)
*#1234#(显示当前固件)
* 2767 * 4387264636#(要显示产品代码)
* IMEI号*#272#*(显示/更改伪代码)
或*#272#* * HHMM
*#12580 * 369#(软件&硬件信息)
*#44336#(软件版本信息)
复位:
*#*#7780#*#*或*#7780#(厂软复位)
* 2767 * 3855#(工厂硬复位的ROM固件默认设置)
固件工具:
*#2663#(固件更新)
*#34971539#(相机固件更新)
*#7412365#(相机固件菜单)
或*#*#34971539#*#*
*#03#(NAND快闪记忆体的S / N)的
通用测试/调试:
*#0 *#(综合测试模式)
*#*#4636#*#*(诊断和模式一般设置)
*#*#197328640#*#*(服务模式下的主菜单)
*#7353#(快速测试菜单)
无线:
*#232337#(蓝牙地址)
*#232331#(蓝牙测试模式)
*#232338#(无线局域网MAC地址)
*#232339#(WLAN测试模式)
*#526#(无线局域网工程模式)
*#528#(无线局域网工程模式)
全球定位系统:
*#1575#(GPS控制菜单)
*#*#1472365 *#*#(GPS测试设置)
传感器:
*#0588#(接近传感器测试模式)
*#0589#(光感应器测试模式)
音频:
*#0673#(音频测试模式)
*#0283#(音频回传控制)
*#0289#(旋律测试模式)
按钮:
*#7594#(重映射关机以结束通话)
电池:
*#0228#(电池状态:容量,电压,温度)
其他测试/调试:
*#32489#(通话加密信息)
*#0842#(抑振电机测试模式)
*#0782#(实时时钟测试)
*#2263#(射频波段选择)
*#9090#(诊断配置)
*#7284#(I2C模式的USB控制)
*#872564#(记录的USB控制)
*#4238378#(GCF的配置)
*#3214789650#(磅测试模式)
*#745#(RIL的转储菜单)
*#746#(调试转储菜单)
*#9900#(系统转储模式)
*#273283 * 255 * 3282 *#(数据创建菜单)
*#273283 * 255 * 663282 *#(数据创建SD卡)
*#3282 * 727336 *#(资料使用情况)
*#80#(未知)
*#07#(测试历史)
*#3214789#(GCF的模式状态)
*#272886#(自动应答选择)
*#8736364#(OTA更新菜单)
*#301279#(HSDPA / HSUPA的控制菜单)
* 2767 * 4387264636#(出卖短信/ PCODE观点)
*#7465625#(查看手机锁定状态)
* 7465625 * 638 *#(配置网络锁定的MCC /跨国公司)
#7465625 * 638 *#(插入网络锁密码)
* 7465625 * 782 *#(配置网络锁定新型干法)
#7465625 * 782 *#(插入Partitial网络锁定密码)
* 7465625 * 77 *#(插入网络锁定密钥号码SP法)
#7465625 * 77 *#(插入操作锁密码)
* 7465625 * 27 *#(插入网络锁定密钥号码)
#7465625 * 27 *#(插入内容提供商密码)
谨慎使用!!
1.出厂日期查询方法:
进入拨号输入 *#197328640# 进工程模式;
点菜单键再点Key Input输入值2;
再点菜单键点Key Input输入值2;
再点菜单键点Key Input输入值4;
就可以看到cal date:显示出厂日期。
2.看通话时间:
*#*#4636#*#* 这是看通话时间的 在1分钟以内才是正常的
3.测试有无锁三键:
音量下键+HOME键+电源键,如果能出现机器人挖煤的动画,就是无锁三键,反之就是锁三键.
4.测试有无网络锁
*#7465625# 这是看是不是锁机 只要是OFF就是正常,如果第二项“network lock”值为"disable"表示无网络锁,值为"enable"表示有锁。
5.识别机器的原产地
在待机状态下,点击拨号键
输入: *#272*串号#,然后进入产地
6.屏幕检测:
*#0*# 工程测试 买机必测
第一行 三个原色测试
第二行 1声音 2振动 3亮度降低
第三行 1照相 2磁传感器 3触摸屏
第四行 1休眠模式 2重力感应
里面有“LCD TEST",按“RED”全屏显红色,按“green” 全屏显绿色,按“blue”显蓝色,如要返回测试菜单,请按中间的确认键,退出按挂机键。
7.IMEI 码检验:
输入 *#06# ,查看手机内存中的IMEI 码,记住这个号码,然后输入 *2767*3855# 进行i900码片复位,手机会自动重启,
最后再输入 *#06# ,查看这个IMEI码有没有改变,如果这个号码与手机背贴、外包装盒上的 IMEI 码一致,且型号核准号码与手机型号一致 ,
就证明是原厂正宗货。如果不一致,或者变成了一串乱码,则证明该手机要么是水改机,要么是翻新机。如果指令不被执行,则说明码片复位功能已被JS 屏蔽掉了。切记:此操作相当于硬启手机
[3] 编码轨范机制设计与分析
来源: 互联网 发布时间: 2014-02-18
编码规范机制设计与分析
不会这么背吧,第一条评论就在讽刺我了,悲剧哦
1.执行的代码中间绝对不会出现具体的数值。因为:
未来只要有可能发生变化的数值资源存入res/XML,实现代码外的修改。
铁定不会变的数值,用大写的单词和前缀public static final ,定义为类的私有变量,可以实现一处改,处处改。用于避免人在修改代码的时候修改这些final的变量,导致可能出现的多处数值不同步修改的情况
2.
1 楼
hssdw25172008
2013-10-02
总结的很好~
2 楼
zzqnnu
2013-10-05
hssdw25172008 写道
总结的很好~
不会这么背吧,第一条评论就在讽刺我了,悲剧哦
最新技术文章: