androidmodem
① Android系统的Modem是什么个东东为什么工程模式要用到Modem通信讲详细些好吧!谢谢!
这样说吧,在手机上 Modem 可以理解为 电脑上的网卡, 而Sim卡是网卡上的芯片。
通过Modem 可以 与Sim 进行交互 ,读取相关信息或协议等等。
手机工程模式即是调试模式.一般是手机维修时候使用,它要用到网络。
所以一定要用到Sim卡的网络协议支持,也就一定要通过Modem通信了。
② android手机连接WiFi,WiFi连接modem,在android开发代码实现如何判断手机是否能上网。
java">/**
*检测网络是否连接
*@return
*/
(){
booleanflag=false;
//得到网络连接信息
manager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
//去进行判断网络是否连接
if(manager.getActiveNetworkInfo()!=null){
flag=manager.getActiveNetworkInfo().isAvailable();
}
if(!flag){
setNetwork();
}else{
isNetworkAvailable();
}
returnflag;
}
/**
*网络未连接时,调用设置方法
*/
privatevoidsetNetwork(){
Toast.makeText(this,"wifiisclosed!",Toast.LENGTH_SHORT).show();
AlertDialog.Builderbuilder=newAlertDialog.Builder(this);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("网络提示信息");
builder.setMessage("网络不可用,如果继续,请先设置网络!");
builder.setPositiveButton("设置",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
Intentintent=null;
/**
*判断手机系统的版本!如果API大于10就是3.0+
*因为3.0以上的版本的设置和3.0以下的设置不一样,调用的方法不同
*/
if(android.os.Build.VERSION.SDK_INT>10){
intent=newIntent(android.provider.Settings.ACTION_WIFI_SETTINGS);
}else{
intent=newIntent();
ComponentNamecomponent=newComponentName(
"com.android.settings",
"com.android.settings.WirelessSettings");
intent.setComponent(component);
intent.setAction("android.intent.action.VIEW");
}
startActivity(intent);
}
});
builder.setNegativeButton("取消",newOnClickListener(){
@Override
publicvoidonClick(DialogInterfacedialog,intwhich){
}
});
builder.create();
builder.show();
}
/**
*网络已经连接,然后去判断是wifi连接还是GPRS连接
*设置一些自己的逻辑调用
*/
privatevoidisNetworkAvailable(){
Stategprs=manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
Statewifi=manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if(gprs==State.CONNECTED||gprs==State.CONNECTING){
Toast.makeText(this,"wifiisopen!gprs",Toast.LENGTH_SHORT).show();
}
//判断为wifi状态下才加载广告,如果是GPRS手机网络则不加载!
if(wifi==State.CONNECTED||wifi==State.CONNECTING){
Toast.makeText(this,"wifiisopen!wifi",Toast.LENGTH_SHORT).show();
loadAdmob();
}
}
/**
*在wifi状态下加载admob广告
*/
privatevoidloadAdmob(){
ll=(LinearLayout)findViewById(R.id.load_ads);
ll.removeAllViews();
adsView=newAdView(this,AdSize.BANNER,"a15194a1ac9505d");
ll.addView(adsView);
adsView.loadAd(newAdRequest());
}
③ 安卓系统手机可以当成猫(Modem)放出热点让电脑上网吗
可以。请您跟随以下操作指引,享受上网的乐趣吧!以联想乐Phone为例,第一步:1、开通手机上网功能且设置正常,可以手机上网;2、电脑登陆联想官方网站下载并安装驱动程序:通过USB数据线连接乐Phone手机和电脑-->手机上提示是否进入USB模式,选择“取消”-->双击电脑上已下载压缩文件,解压选择点击“乐Phone91手机助手”文件,按照提示步骤进行安装;关闭手机推送功能;第二步:右键点击“我的电脑”选择“属性”-->硬件-->设备管理器-->调制调解器-->点击Modem右键-->属性-->高级-->额外的初始化命令,输入AT 控制命令:联通:AT+CGDCONT=1,"IP","uninet" ;第三步:新建拨号连接:在“控制面板”—“网络连接”界面,点击“创建一个新的连接” -->手动设置我的连接-->用拨号调制解调器连接-->ISP名称为乐PHONE-->电话号码为*99#;第四步:打开新建的拨号连接,用户名和密码都空着,拨号号码为*99#;点击拨号。
④ 如何修改android模拟器上的IMEI,IMSI,SIM card serial number
手机使用IMEI和IMSI登录到GSM网络的,由GSM网络侧负责将IMSI和映射成手机号(MSISDN),以及执行相反方向的映射。
(一)、SIM card 号的修改:
SIM card号就是印制在SIM上的一串数字。
读SIM card号的AT命令为:AT+CRSM=176,12258,0,0,10
因此在andorid模拟其源码中找到该AT命令——在sim_card.c中:
const char*
asimcard_io( ASimCard sim, const char* cmd )
{
int nn;
#if ENABLE_DYNAMIC_RECORDS
int command, id, p1, p2, p3;
#endif
static const struct { const char* cmd; const char* answer; } answers[] =
{
{ "+CRSM=192,28436,0,0,15", "+CRSM: 144,0," },
{ "+CRSM=176,28436,0,0,20", "+CRSM: 144,0," },
{ "+CRSM=192,28433,0,0,15", "+CRSM: 144,0," },
{ "+CRSM=176,28433,0,0,1", "+CRSM: 144,0,55" },
{ "+CRSM=192,12258,0,0,15", "+CRSM: 144,0," },
{ "+CRSM=176,12258,0,0,10", "+CRSM: 144,0,98101430121181157002" },
...
...
因此用UE二进制方式打开emulator-arm.exe 或 emulator-x86.exe,并搜索字符串“98101430121181157002”,然后将其修改成需要的SIM card号。
比如:
00209a00h: 31 30 00 00 2B 43 52 53 4D 3A 20 31 34 34 2C 30 ; 10..+CRSM: 144,0
00209a10h: 2C 39 38 31 30 31 34 33 30 31 32 31 31 38 31 31 ; ,981014301211811
00209a20h: 35 37 30 30 32 00 2B 43 52 53 4D 3D 31 39 32 2C ; 57002.+CRSM=192,
(二)、IMEI、IMSI号的修改:
Java代码中获取手机的IMEI号与ISMI号途径为:
TelephonyManager manager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String imei = manager.getDeviceId();
String imsi = manager.getSubscriberId();
在android的源码树中找到类TelephonyManager的实现:
成员函数getDeviceId:
/**
* Returns the unique device ID, for example, the IMEI for GSM and the MEID
* or ESN for CDMA phones. Return null if device ID is not available.
*
* <p>Requires Permission:
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*/
public String getDeviceId() {
try {
return getSubscriberInfo().getDeviceId();
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
return null;
}
}
成员函数getSubscriberId:
/**
* Returns the unique subscriber ID, for example, the IMSI for a GSM phone.
* Return null if it is unavailable.
* <p>
* Requires Permission:
* {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE}
*/
public String getSubscriberId() {
try {
return getSubscriberInfo().getSubscriberId();
} catch (RemoteException ex) {
return null;
} catch (NullPointerException ex) {
// This could happen before phone restarts e to crashing
return null;
}
}
上面两个成员函数最终调用共同的一个私有成员函数getSubscriberInfo():
private IPhoneSubInfo getSubscriberInfo() {
// get it each time because that process crashes a lot
return IPhoneSubInfo.Stub.asInterface(ServiceManager.getService("iphonesubinfo"));
}
而上面私有函数getSubscriberInfo获取的手机IMSI和IMEI号被硬编码在文件android_modem.c中:
/* the Android GSM stack checks that the operator's name has changed
* when roaming is on. If not, it will not update the Roaming status icon
*
* this means that we need to emulate two distinct operators:
* - the first one for the 'home' registration state, must also correspond
* to the emulated user's IMEI
*
* - the second one for the 'roaming' registration state, must have a
* different name and MCC/MNC
*/
#define OPERATOR_HOME_INDEX 0
#define OPERATOR_HOME_MCC 310
#define OPERATOR_HOME_MNC 260
#define OPERATOR_HOME_NAME "Android"
#define OPERATOR_HOME_MCCMNC STRINGIFY(OPERATOR_HOME_MCC) \
STRINGIFY(OPERATOR_HOME_MNC)
#define OPERATOR_ROAMING_INDEX 1
#define OPERATOR_ROAMING_MCC 310
#define OPERATOR_ROAMING_MNC 295
#define OPERATOR_ROAMING_NAME "TelKila"
#define OPERATOR_ROAMING_MCCMNC STRINGIFY(OPERATOR_ROAMING_MCC) \
STRINGIFY(OPERATOR_ROAMING_MNC)
/* a function used to deal with a non-trivial request */
typedef const char* (*ResponseHandler)(const char* cmd, AModem modem);
static const struct {
const char* cmd; /* command coming from libreference-ril.so, if first
character is '!', then the rest is a prefix only */
const char* answer; /* default answer, NULL if needs specific handling or
if OK is good enough */
ResponseHandler handler; /* specific handler, ignored if 'answer' is not NULL,
NULL if OK is good enough */
} sDefaultResponses[] =
{
/* see onRadioPowerOn() */
{ "%CPHS=1", NULL, NULL },
{ "%CTZV=1", NULL, NULL },
...
{ "!+VTS=", NULL, handleSetDialTone },
{ "+CIMI", OPERATOR_HOME_MCCMNC "000000000", NULL }, /* request internation subscriber identification number */
{ "+CGSN", "000000000000000", NULL }, /* request model version */
{ "+CUSD=2",NULL, NULL }, /* Cancel USSD */
...
/* end of list */
{NULL, NULL, NULL}
};
因此用UE二进制方式打开emulator-arm.exe 或 emulator-x86.exe,并搜索字符串"+CGSN"修改为需要的IMEI号;搜索"+CIMI"修改为需要的IMSI号。需要注意的是 IMSI 号的头六个数字"310260"不能修改,否则模拟器无法与网络连接。
例如:
001fc700h: 33 00 41 00 48 00 21 2B 56 54 53 3D 00 2B 43 49 ; 3.A.H.!+VTS=.+CI
001fc710h: 4D 49 00 33 31 30 32 36 30 30 30 30 30 30 30 30 ; MI.3102600000000
001fc720h: 30 30 00 2B 43 47 53 4E 00 30 30 30 30 30 30 30 ; 00.+CGSN.0000000
001fc730h: 30 30 30 30 30 30 30 30 00 2B 43 55 53 44 3D 32 ; 00000000.+CUSD=2
⑤ Android里的挂载Modem分区是什么意思
挂载Modem是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符。 在第三方软件,如磁盘分区管理软件、虚拟磁盘软件中,也附带有挂载功能。 在linux操作系统中, 挂载是指将一个设备(通常是存储设备)挂接到一个已存在的目录上。 我们要访问存储设备中的文件,必须将文件所在的分区挂载到一个已存在的目录上, 然后通过访问这个目录来访问存储设备。
⑥ android kernel modem哪个先起来
主要看是高通还是MTK了。不过大致相当,只是log文件名称不一样而已
手机的android log(包含 main_log、events_log、kernel_log),mainlog记录手机android上层app以及framework相关活动的log,比如你写的app打印的log,就在这里面;eventslog则主要是ActivityManager、powerManager等相关的log;Kernellog则主要是驱动相关的log。
Modem log,主要是通话相关的,比如信号强弱、连接那个网络等等
还有网络相关的netlog,看网络链接情况,抓取网络包等等
主要是以上这三个,其它还有data/anr 目录下的traces/tombstones等等,分析死机、重启还是很重要的。
看应用申请什么权限,就看mainlog就行,但是不一定有,因为一般手机log不会放开。
你可以在终端里键入命令查看其申请了什么权限: adb shell mpsys package <包名>,或者反编译其apk,查看其AndroidManifest.xml文件。
⑦ 安卓的ModemLog怎么设置
Common UI、ModemLog、MobileLog、NetLog ,从这些的名称不难看出这是一些记录系统事件的进程:
其中ModemLog主要记录手机数据连接所产生的事件,MobileLog记录系统改变产生的事件,如修改权限,NetLog这个进程记录网络连接产生的事件。
既然是记录系统事件的,普通用户就没有必要去知道系统发生哪些事件,那是为开发人员调试准备的,可以卸载。
解决办法:
root手机:可用360手机助手获取root权限
然后是进入管理程序点击正在运行这个选项,找到MobileLog.apk或者ModemLog.apk进程,有可能这两个都有,找到点击进入,点击停止,然后退出
打开RE文件管理器(需要ROOT权限),进入到systemapp文件夹,挂载读写,找到MobileLog.apk、ModemLog.apk这两个文件,逐个删除,然后退出RE文件管理器,重启系统即可
建议在操作之前做好整个system文件的备份,以防万一。另外,建议平时还是把超级授权设置里面的超级用户关闭并隐藏,这样系统更安全。
⑧ android modem模块怎么编译
(1)MT6577以及之前的chip平台(如MT6575,73等) 的modem编译环境和MTK的Feature Phone的编译环境一样,即Windows+RVCT
(2)从MT6589开始,modem编译环境已经切换到Linux OS + GCC[KEYWORD]modem编译[SOLUTION]
(1)MT6577以及之前的chip平台的modem编译环境文档,请到DCC上搜索
MTK_MakeBuild_Design_Customer.docx
,该文档详细介绍环境搭建和编译流程介绍。
(2)MT6589以及后续chip的modem编译环境参考文档,请到DCC上搜索
该文档详细介绍环境搭建和编译流程介绍。
⑨ Android开发中的radio与modem分别是什么
能说详细点吗?radio就很笼统,是radioButton还是什么,后面的modem就是个调制解调器,管理着通话上网以及一些通信的东西