求htc双卡双待安卓的安卓几

5328人阅读
看到一篇比较牛逼的文章:
分类:& 20:50&777人阅读&(3)&&
Moto XT800&是Moto为中国电信定制的一款天翼双卡双待手机,&采用的是深度定制的android系统.&原生的android系统是不支持双卡的,&所以Moto对android系统进行了大量的修改,&其中变化最大的当属短信和电话服务.&这篇文章主要是讲述XT800的短信和电话服务的机制,&以及发送短信和打电话的方法.
原生的android系统的电话和短信服务
原生的android系统只有一对电话和短信服务.&这两个服务的名称分别是phone和isms. Phone服务用来打电话和接电话,&所有的电话操作都是通过这个服务来进行的. isms服务用来发送和接受短信,&所有的短信操作都是通过这个服务来进行的. API SmsManager.sendTextMessage&实际上是对这个服务进行了一定的封装.&两个服务都是通过Aidl进行类似IPC的跨进程调用的.
Ps1:&获取当前系统服务的方法
&adb shell
$service list
PS2:&在程序中获取系统服务的方法
需要用到系统隐藏api,
IBinder iBinder = ServiceManager.getService(String ServiceName); //获取系统相应的服务
如果调用的话,&需要使用aidl
ISms isms = ISms.Stub.asInterface(iBinder);
Xt800的电话和短信服务
首先需要说明, XT800有两个SIM卡卡槽,&卡槽1是CDMA,&卡槽2是GSM.&也就是说,双卡双待是有条件的,&必须一个是CDMA,一个是GSM ,&而且要放置在正确的位置上.
XT800的电话和短信服务有两对,&以对应两个卡CDMA&和GSM.
服务列表如下:
对于双卡手机,&可能只插了一张卡,&即使有两张卡,&也要判断哪个是GSM,&哪个CDMA的.&下表对三种情况:&双卡,&单GSM卡,&单CDMA卡&分别测试.
1.&&&&&&&判断网络类型的方法:
iTelephony.getActivePhoneType(); //2 CDMA 1 GSM
2.&判断是否服务是否有效的方法
&ITelephony iTelephony = ITelephony.Stub.asInterface(phone);
iTelephony.isRadioOn();
Android的RIL驱动模块,在hardware/ril目录下,一共分rild,libril.so以及librefrence_ril.so三个部分,另有一 radiooptions可供自动或手动调试使用。都依赖于include目录中ril.h头文件。目前cupcake分支上带的是gsm的支持,另有一 cdma分支,这里分析的是gsm驱动。
GSM模块,由于Modem的历史原因,AP一直是通过基于串口的AT命令与BB交互。包括到了目前的一些edge或3g模块,或像omap这类ap,bp集成的芯片,已经使用了USB或其他等高速总线通信,但大多仍然使用模拟串口机制来使用AT命令。这里的RIL(Radio Interface Layer)层,主要也就是基于AT命令的操作,如发命令,response解析等。(gprs等传输会用到的MUX协议等在这里并没有包含,也暂不作介绍。)
  以下是详细分析,本文主要涉及基本架构和初始化的内容:
  首先介绍一下rild与libril.so以及librefrence_ril.so的关系:
  1. rild:
  仅实现一main函数作为整个ril层的入口点,负责完成初始化。
  2. libril.so:
  与rild结合相当紧密,是其共享库,编译时就已经建立了这一关系。组成部分为ril.cpp,ril_event.cpp。libril.so驻留在 rild这一守护进程中,主要完成同上层通信的工作,接受ril请求并传递给librefrence_ril.so,同时把来自librefrence_ril.so的反馈回传给调用进程。
  3. librefrence_ril.so:
  rild通过手动的dlopen方式加载,结合稍微松散,这也是因为librefrence.so主要负责跟Modem硬件通信的缘故。这样做更方便替换或修改以适配更多的Modem种类。它转换来自libril.so的请求为AT命令,同时监控Modem的反馈信息,并传递回libril.so。在初始化时, rild通过符号RIL_Init获取一组函数指针并以此与之建立联系。
&&&& 4. radiooptions:
  radiooptiongs通过获取启动参数, 利用socket与rild通信,可供调试时配置Modem参数。
  接下来分析初始化流程,主入口是rild.c中的main函数,主要完成三个任务:
  1. 开启libril.so中的event机制, 在RIL_startEventLoop中,是最核心的由多路I/O驱动的消息循环。
  2. 初始化librefrence_ril.so,也就是跟硬件或模拟硬件modem通信的部分(后面统一称硬件), 通过RIL_Init函数完成。
  3. 通过RIL_Init获取一组函数指针RIL_RadioFunctions, 并通过RIL_register完成注册,并打开接受上层命令的socket通道。
  首先看第一个任务,也就是RIL_startEventLoop函数。RIL_startEventLoop在ril.cpp中实现,它的主要目的是通过pthread_create(&s_tid_dispatch, &attr, eventLoop, NULL)建立一个dispatch线程,入口点在eventLoop. 而eventLoop中,会调ril_event.cpp中的ril_event_loop()函数,建立起消息(event)队列机制。
  我们来仔细看看这一消息队列的机制,这些代码都在ril_event.cpp中。
  每个ril_event结构,与一个fd句柄绑定(可以是文件,socket,管道等),并且带一个func指针去执行指定的操作。
  具体流程是: ril_event_init完成后,通过ril_event_set来配置一新ril_event,并通过ril_event_add加入队列之中(实际通常用rilEventAddWakeup来添加),add会把队列里所有ril_event的fd,放入一个fd集合readFds中。这样 ril_event_loop能通过一个多路复用I/O的机制(select)来等待这些fd,如果任何一个fd有数据写入,则进入分析流程processTimeouts(),processReadReadies(&rfds,
n),firePending()。 后文会详细分析这些流程。
  另外我们可以看到, 在进入ril_event_loop之前,已经挂入了一s_wakeupfd_event, 通过pipe的机制实现的,这个event的目的是可以在一些情况下,能内部唤醒ril_event_loop的多路复用阻塞,比如一些带timeout的命令timeout到期的时候。
  至此第一个任务分析完毕,这样便建立起了基于event队列的消息循环,稍后便可以接受上层发来的的请求了(上层请求的event对象建立,在第三个任务中)。
  接下来看第二个任务,这个任务的入口是RIL_Init, RIL_Init首先通过参数获取硬件接口的设备文件或模拟硬件接口的socket. 接下来便新开一个线程继续初始化, 即mainLoop。
  mainLoop的主要任务是建立起与硬件的通信,然后通过read方法阻塞等待硬件的主动上报或响应。在注册一些基础回调(timeout,readerclose)后,mainLoop首先打开硬件设备文件,建立起与硬件的通信,s_device_path和s_port 是前面获取的设备路径参数,将其打开(两者可以同时打开并拥有各自的reader,这里也很容易添加双卡双待等支持)。
  接下来通过 at_open函数建立起这一设备文件上的reader等待循环,这也是通过新建一个线程完成, ret = pthread_create(&s_tid_reader, &attr, readerLoop, &attr),入口点readerLoop。
  AT命令都是以rn或nr的换行符来作为分隔符的,所以readerLoop是line驱动的,除非出错,超时等,否则会读到一行完整的响应或主动上报,才会返回。这个循环跑起来以后,我们基本的AT响应机制已经建立了起来。它的具体分析,包括at_open中挂接的ATUnsolHandler, 我们都放到后面分析response的连载文章里去。
  有了响应的机制(当然,能与硬件通信也已经可以发请求了),通过 RIL_requestTimedCallback(initializeCallback, NULL, &TIMEVAL_0),跑到initializeCallback中,执行一些Modem的初始化命令,主要都是AT命令的方式。发AT命令的流程,我们放到后面分析request的连载文章里。这里可以看到,主要是一些参数配置,以及网络状态的检查等。至此第二个任务分析完毕,硬件已经可以访问了。
  最后是第三个任务。第三个任务是由RIL_Init的返回值开始的,这是一个RIL_RadioFunctions结构的指针。
  其中最重要的是onRequest域,上层来的请求都由这个函数进行映射后转换成对应的AT命令发给硬件。
  rild通过RIL_register注册这一指针。
  RIL_register中要完成的另外一个任务,就是打开前面提到的跟上层通信的socket接口(s_fdListen是主接口,s_fdDebug供调试时使用)。
  然后将这两个socket接口使用任务一中实现的机制进行注册(仅列出s_fdListen)
  这样将两个socket加到任务一中建立起来多路复用I/O的检查句柄集合中,一旦有上层来的(调试)请求,event机制便能响应处理了。到这里启动流程已经分析完毕。
request流程
1. 多路复用I/O机制的运转
上文说到request是接收,是通过ril_event_loop中的多路复用I/O,也对初始化做了分析.现在我们来仔细看看这个机制如何运转.
ril_event_set负责配置一个event,主要有两种event:
ril_event_add添加使用多路I/O的event,它负责将其挂到队列,同时将event的通道句柄fd加入到watch_table,然后通过select等待.
ril_timer_add添加timer event,它将其挂在队列,同时重新计算最短超时时间.
无论哪种add,最后都会调用triggerEvLoop来刷新队列,更新超时值或等待对象.
刷新之后, ril_event_loop从阻塞的位置,select返回,只有两种可能,一是超时,二是等待到了某I/O操作.
超时的处理在processTimeouts中,摘下超时的event,加入pending_list.
检查有I/O操作的通道的处理在processReadReadies中,将超时的event加入pending_list.
最后在firePending中,检索pending_list的event并依次执行event-&func.
这些操作完之后,计算新超时时间,并重新select阻塞于多路I/O.
前面的初始化流程已分析得知,初始化完成以后,队列上挂了3个event对象,分别是:
s_listen_event: 名为rild的socket,主要requeset & response通道
s_debug_event: 名为rild-debug的socket,调试用requeset & response通道(流程与s_listen_event基本相同,后面仅分析s_listen_event)
s_wakeupfd_event: 无名管道,用于队列主动唤醒(前面提到的队列刷新,就用它来实现,请参考使用它的相关地方)
2. request的传入和dispatch
明白了event队列的基本运行流程,我们可以来看看request是怎么传入和dispatch的了.
上层的部分,核心代码在frameworks/base/telephony/java/com/android/internal/telephony /gsm/RIL.java,这是android java框架处理radio(gsm)的核心组件.本文因为主要关注rild,也就是驱动部分,所以这里只作简单介绍.
我们看一个具体的例子,RIL.java中的dial函数:
rr是以RIL_REQUEST_DIAL为request号而申请的一个RILRequest对象.这个request号在java框架和rild库中共享(参考RILConstants.java中这些值的由来:))
RILRequest初始化的时候,会连接名为rild的socket(也就是rild中s_listen_event绑定的socket),初始化数据传输的通道.&
rr.mp 是Parcel对象,Parcel是一套简单的序列化协议,用于将对象(或对象的成员)序列化成字节流,以供传递参数之用.这里可以看到String address和int clirMode都是将依次序列化的成员.在这之前,rr初始化的时候,request号跟request的序列号(自动生成的递增数),已经成为头两个将被序列化的成员.这为后面的request解析打下了基础.
接下来是send到handleMessage的流程,send将rr直接传递给另一个线程的handleMessage,handleMessage执行data = rr.mp.marshall()执行序列化操作, 并将data字节流写入到rild socket.
接下来回到我们的rild,select发现rild socket有了请求链接的信号,导致s_listen_event被挂入pending_list,执行event-&func,即
static void listenCallback (int fd, short flags, void *param);
接下来,s_fdCommand = accept(s_fdListen, (sockaddr *) &peeraddr, &socklen),获取传入的socket描述符,也就是上层的java RIL传入的连接.
然后,通过record_stream_new建立起一个record_stream, 将其与s_fdCommand绑定, 这里我们不关注record_stream 的具体流程, 我们来关注command event的回调, processCommandsCallback函数, 从前面的event机制分析, 一旦s_fdCommand上有数据, 此回调函数就会被调用. (略过onNewCommandConnect的分析)
processCommandsCallback通过 record_stream_get_next阻塞读取s_fdCommand上发来的 数据, 直到收到一完整的request(request包的完整性由record_stream的机制保证), 然后将其送达processCommandBuffer.
进入processCommandBuffer以后,我们就正式进入了命令的解析部分. 每个命令将以RequestInfo的形式存在.
这里的pRI就是一个RequestInfo结构指针, 从socket过来的数据流, 前面提到是Parcel处理过的序列化字节流, 这里会通过反序列化的方法提取出来. 最前面的是request号, 以及token域(request的递增序列号). 我们更关注这个request号, 前面提到, 上层和rild之间, 这个号是统一的. 它的定义是一个包含ril_commands.h的枚举, 在ril.cpp中
pRI直接访问这个数组, 来获取自己的pCI.
这是一个CommandInfo结构:
基本解析到这里就完成了, 接下来, pRI被挂入pending的request队列, 执行具体的pCI-&dispatchFunction, 进行详细解析.
3. request的详细解析
对dial而言, CommandInfo结构是这样初始化的:
{RIL_REQUEST_DIAL, dispatchDial, responseVoid},
这里执行dispatchFunction, 也就是dispatchDial这一函数.我们可以看到其实有很多种类的dispatch function, 比如dispatchVoid, dispatchStrings, dispatchSIM_IO等等, 这些函数的区别, 在于Parcel传入的参数形式,Void就是不带参数的,Strings是以string[]做参数,又如Dial等,有自己的参数解析方式,以此类推.
request号和参数现在都有了,那么可以进行具体的request函数调用了.
s_callbacks.onRequest(pRI-&pCI-&requestNumber, xxx, len, pRI)完成这一操作.
s_callbacks 是上篇文章中提到的获取自libreference-ril的RIL_RadioFunctions结构指针,request请求在这里转入底层的 libreference-ril处理,handler是reference-ril.c中的onRequest.
onRequest进行一个简单的switch分发,我们依然来看RIL_REQUEST_DIAL
流程是 onRequest--&requestDial--&at_send_command--&at_send_command_full--&at_send_command_full_nolock--&writeline
requestDial中将命令和参数转换成对应的AT命令,调用公共send command接口at_send_command.
除了这个接口之外,还有 at_send_command_singleline,at_send_command_sms,at_send_command_multiline 等,这是根据at返回值,以及发命令流程的类型来区别的.比如at+csq这类,需要at_send_command_singleline,而发送短信,因为有prompt提示符&&&,传裸数据,结束符等一系列操作,需要专门用at_send_command_sms来实现.
然后执行at_send_command_full,前面几个接口都会最终到这里,再通过一个互斥的at_send_command_full_nolock调用,然后完成最终的写出操作,在writeline中,写出到初始化时打开的设备中.
writeline返回之后,还有一些操作,如保存type等信息,供response回来时候使用,以及一些超时处理. 不再详述.
到这里,request的详细流程,就分析完毕了.
response流程
前文对request的分析, 终止在了at_send_command_full_nolock里的writeline操作,因为这里完成命令写出到硬件设备的操作,接下来就是等待硬件响应,也就是response的过程了。我们的分析也是从这里开始。
response信息的获取,是在第一篇初始化分析中,提到的readerLoop中。由readline函数以‘行’为单位接收上来。
AT的response有两种,一是主动上报的,比如网络状态,短信,来电等都不需要经过请求,有一unsolicited词语专门描述。另一种才是真正意义上的response,也就是命令的响应。
这里我们可以看到,所有的行,首先经过sms的自动上报筛选,因为短信的AT处理通常比较麻烦,无论收发都单独列出。这里是因为要即时处理这条短信消息(两行,标志+pdu),而不能拆开处理。处理函数为onUnsolicited(由s_unsolHandler指向),我们等下介绍。
除开sms的特例,所有的line都要经过processLine,我们来看看这个流程:
processLine
|----no cmd---&handleUnsolicited //主动上报
|----isFinalResponseSuccess---&handleFinalResponse //成功,标准响应
|----isFinalResponseError---&handleFinalResponse //失败,标准响应
|----get '&'---&send sms pdu //收到&符号,发送sms数据再继续等待响应
|----switch s_type---&具体响应& //命令有具体的响应信息需要对应分析
我们这里主要关注handleUnsolicited自动上报(会调用到前面smsUnsolicite也调用的onUnsolicite),以及 switch s_type具体响应信息,另外具体响应需要handleFinalResponse这样的标准响应来最终完成。
1. onUnsolicite(主动上报响应)
static void onUnsolicited (const char *s, const char *sms_pdu);
短信的AT设计真是麻烦的主,以致这个函数的第二个参数完全就是为它准备的。
response 的主要的解析过程,由at_tok.c中的函数完成,其实就是字符串按块解析,具体的解析方式由每条命令或上报信息自行决定。这里不再详述,onUnsolicited只解析出头部(一般是+XXXX的形式),然后按类型决定下一步操作,操作为 RIL_onUnsolicitedResponse和RIL_requestTimedCallback两种。
a)RIL_onUnsolicitedResponse:&
将 unsolicited的信息直接返回给上层。通过Parcel传递,将 RESPONSE_UNSOLICITED,unsolResponse(request号)写入Parcel先,然后通过 s_unsolResponses数组,查找到对应的responseFunction完成进一步的的解析,存入Parcel中。最终通过 sendResponse将其传递回原进程。流程:
sendResponse--&sendResponseRaw--&blockingWrite--&write to s_fdCommand(前面建立起来的和上层框架的socket连接)
这些步骤之后有一些唤醒系统等其他操作。不再详述。
b)RIL_requestTimedCallback:
通过event机制(参考文章二)实现的timer机制,回调对应的内部处理函数。通过internalRequestTimedCallback将回调添加到event循环,最终完成callback上挂的函数的回调。比如pollSIMState,onPDPContextListChanged等回调, 不用返回上层, 内部处理就可以。
2. switch s_type(命令的具体响应)及handleFinalResponse(标准响应)
命令的类型(s_type)在send command的时候设置(参考文章二),有NO_RESULT,NUMERIC,SINGLELINE,MULTILINE几种,供不同的AT使用。比如AT+CSQ是singleline, 返回at+csq=xx,xx,再加一行OK,比如一些设置命令,就是no_result, 只有一行OK或ERROR。
这几个类型的解析都很相仿,通过一定的判断(比较AT头标记等),如果是对应的响应,就通过 addIntermediate挂到一个临时结果sp_response-&p_intermediates队列里。如果不是对应响应,那它其实应该是穿插其中的自动上报,用onUnsolicite来处理。
具体响应,只起一个获取响应信息到临时结果,等待具体分析的作用。无论有无具体响应,最终都得以标准响应handleFinalResponse来完成,也就是接受到OK,ERROR等标准response来结束,这是大多数AT命令的规范。
handleFinalResponse 会设置s_commandcond这一object,也就是at_send_command_full_nolock等待的对象。到这里,响应的完整信息已经完全获得,send command可以进一步处理返回的信息了(临时结果,以及标准返回的成功或失败,都在sp_response中)。
pp_outResponse参数将sp_response返回给调用at_send_command_full_nolock的函数。
继续我们在文章二的分析的话,这个函数其实是requestDial,不过requestDial忽略了响应,所以我们另外看个例子,如requestSignalStrength,命令其实就是前面提到的at+csq:
可以看到确实是通过at_send_command_singleline来进行的操作,response在p_response中。
p_response如果返回失败(也就是标准响应的ERROR等造成),则通过RIL_onRequestComplete发送返回数据给上层,结束命令。
如果成功,则进一步分析p_response-&p_intermediates, 同样是通过at_tok.c里的函数进行分析。并同样将结果通过RIL_onRequestComplete返回。
RIL_onRequestComplete:
RIL_onRequestComplete和RIL_onUnsolicitedResponse很相仿,功能也一致。
通过Parcel来传递回上层,同样是先写入RESPONSE_SOLICITED(区别于 RESPONSE_UNSOLICITED),pRI-&token(上层传下的request号),错误码(send command的错误,不是AT响应)。如果有AT响应,通过访问pRI-&pCI-&responseFunction来完成具体 response的解析,并写入Parcel。
然后通过同样的途径:
sendResponse--&sendResponseRaw--&blockingWrite--&write to s_fdCommand
完成最终的响应传递。
到这里,我们分析了自动上报与命令响应,其实response部分,也就告一段落了
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1400944次
积分:15304
积分:15304
排名:第490名
原创:168篇
转载:342篇
评论:183条
(4)(3)(2)(1)(2)(11)(3)(2)(6)(18)(3)(5)(2)(1)(2)(43)(31)(21)(66)(97)(160)(1)(11)(4)(5)(8)
框架,界面,联网
框架,界面,联网
框架,界面,联网- 宽带山KDS
主题:求目前市面上最好的双卡双待安卓机
来自:上海&
发帖:558+8705&
目前在用Note4,屏幕,内存,CPU应该都算旗舰了。但最近又出了S6 edge,可惜没有双卡版本。我两个移动号码如果两台手机太不方便,所以必须双卡。求推荐。
-------------------------------------------------------------------------------------------
来自:上海&
发帖:14+424&
华为p8-==kds官方iPhone客户端==-
-------------------------------------------------------------------------------------------
享受每一天
...第1楼...
来自:浙江&
发帖:246+2128&
小米 499-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:0+7&
酷派-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:151+3308&
-------------------------------------------------------------------------------------------
男人当女人使,女人当牲口使,牲口男女都能使
来自:上海&
发帖:24+272&
G4-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:2+599&
便宜量又足的话,酷派-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:133+1428&
乐视3G内存-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
心无挂碍,无有恐怖,远离颠倒梦想,究竟涅磐!
来自:上海&
发帖:239+3977&
-------------------------------------------------------------------------------------------
来自:上海&
发帖:26+180&
现在正在使用s6双卡给你回复-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
都是余下生命中的
来自:上海&
发帖:160+1845&
大器3-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:558+8707&
从楼上各位热心网友的回复说明两个问题。1. 虽然和不情愿,但不得不承认安卓用户的水准确实普遍不高。2. 正儿八经的问题,回复和百度知道(一直当笑话看)差不多,不靠谱啊。
-------------------------------------------------------------------------------------------
来自:上海&
发帖:243+4852&
三桑的A3 A5 A7
-------------------------------------------------------------------------------------------
中国科学院性息研究所特约研究员
来自:上海&
note3用起来很赞,那行喷的不知道是不是用不来-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
来自:上海&
发帖:558+8709&
note3用起来很赞,那行喷的不知道是不是用不来-==kds官方Android客户端==-引用自13楼:我已经对回复死心了,我现在用的是Note4,尽然还有人推荐大神,小米。无语。
-------------------------------------------------------------------------------------------
来自:上海&
发帖:72+2030&
note3用起来很赞,那行喷的不知道是不是用不来-==kds官方Android客户端==-引用自13楼:我已经对回复死心了,我现在用的是Note4,尽然还有人推荐大神,小米。无语。引用自14楼:那不用大神小米用什么?三丧?小米我觉得一般用用相当不错了
-------------------------------------------------------------------------------------------
My way or high way!
来自:上海&
发帖:101+10655&
人家还要有点逼格
-------------------------------------------------------------------------------------------
不求天长地久,一炮爽好就走&
来自:上海&
发帖:355+3615&
目前最好的肯定还是S6,不过64位CPU竟然只有3g内存,太少了
-------------------------------------------------------------------------------------------
来自:上海&
不能换电池的都是鸡肋
-------------------------------------------------------------------------------------------
我特别想在哭的时候笑,因为我够坚强。
来自:上海&
国外品牌的双卡都是一个4G 另一个只能2G
-------------------------------------------------------------------------------------------
勿谓言之不预也
来自:上海&
发帖:202+5433&
sony z3 双卡双待版,刚出来,支持联通和移动4G
-------------------------------------------------------------------------------------------
---===上海的街头没有石狮子!===---
来自:上海&
发帖:246+12890&
小米note顶配,白金中信卡每月可刷一部,双卡,阳光屏
-------------------------------------------------------------------------------------------
初习文,负债数万,十六年乃成,觅一生计,十年蓄十万余,欲买房,不足首付,遂投股市,翌年不足万余,急火攻心,病几不起,顷其所有,乃愈,购奶粉以养,饮之,卒。
来自:上海&
发帖:558+8710&
国外品牌的双卡都是一个4G 另一个只能2G引用自19楼:可以啊,一个主卡是我个人用上网4G,另外一个卡公司用,只要能打电话发发消息就可以了。
-------------------------------------------------------------------------------------------
来自:上海&
发帖:65+6205&
居然还有用三丧的
-------------------------------------------------------------------------------------------
我摸了摸他的狗头,转身走了
来自:上海&
发帖:9+1118&
sony z3 双卡双待版,刚出来,支持联通和移动4G引用自20楼:刚出来的是3+,3很早就出来了。。。。
-------------------------------------------------------------------------------------------
一个政权到了对外屈服,对内束手,只知道杀人,放火,禁书,掳钱的时候,离末日也就不远了。他们分明感到:天下没有自己的分,毁别人的,是杀别人的,烧别人的,抢别人的,越是凶,越是暴露了他们卑怯和失败的心理。——鲁迅
来自:上海&
发帖:558+8711&
note3用起来很赞,那行喷的不知道是不是用不来-==kds官方Android客户端==-引用自13楼:我已经对回复死心了,我现在用的是Note4,尽然还有人推荐大神,小米。无语。引用自14楼:那不用大神小米用什么?三丧?小米我觉得一般用用相当不错了引用自15楼:所以谈不拢呀,都说安卓比硬件。Note4,2K屏幕,3G内存,卡插TF卡,可换电池,含指纹识别,摄像头大概1500w,还有快速充电,CPU也是64位了,软件的创新,浮动窗口,分屏显示,S-Pen都很实用。大神,华为,小米怎么比?比来比去就是比谁便宜。安卓用户就不能追求品质了吗?苹果就是高端,安卓必须低端?S6 Edge双曲面屏幕,其实我挺喜欢的,差的就是单卡。所以跑来山上问问。
-------------------------------------------------------------------------------------------
来自:上海&
发帖:586+4493&
华为比三星的好。华为机器发热低,省电。价格实惠。
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:0+38&
mate7不解释,现在还选三星智商堪忧-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:558+8712&
mate7不解释,现在还选三星智商堪忧-==kds官方Android客户端==-引用自27楼:懂的朋友来了,我买Note4的时候另外一个选择就是Mate7,配置上可以媲美。最终没选主要原因双卡槽很弱智,要么2张sim卡,要么1张sim卡1张tf卡。当时还买不到,淘宝上价格也要4000多,所以直接入了Note4。现在又过了大半年,我打算换掉Note4,自然不会再回头考虑Mate7了。
-------------------------------------------------------------------------------------------
来自:上海&
发帖:0+89&
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:164+1709&
mate7不解释,现在还选三星智商堪忧-==kds官方Android客户端==-引用自27楼:懂的朋友来了,我买Note4的时候另外一个选择就是Mate7,配置上可以媲美。最终没选主要原因双卡槽很弱智,要么2张sim卡,要么1张sim卡1张tf卡。当时还买不到,淘宝上价格也要4000多,所以直接入了Note4。现在又过了大半年,我打算换掉Note4,自然不会再回头考虑Mate7了。引用自28楼:sony z3 双卡版,外观好,耗电佳,也有L,屏幕好,摄像头无可挑剔
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:17+212&
z3+ 年底索尼上市z5-==kds官方iPhone客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:76+7111&
note3用起来很赞,那行喷的不知道是不是用不来-==kds官方Android客户端==-
引用自13楼:
我已经对回复死心了,我现在用的是Note4,尽然还有人推荐大神,小米。无语。
引用自14楼:
那不用大神小米用什么?三丧?小米我觉得一般用用相当不错了
引用自15楼:
所以谈不拢呀,都说安卓比硬件。Note4,2K屏幕,3G内存,卡插TF卡,可换电池,含指纹识别,摄像头大概1500w,还有快速充电,CPU也是64位了,软件的创新,浮动窗口,分屏显示,S-Pen都很实用。
大神,华为,小米怎么比?比来比去就是比谁便宜。安卓用户就不能追求品质了吗?苹果就是高端,安卓必须低端?
S6 Edge双曲面屏幕,其实我挺喜欢的,差的就是单卡。所以跑来山上问问。
引用自25楼:不定式(a-free)
小米note顶配版是双卡吗,秒note4了吧-==kds官方iPhone客户端==-
-------------------------------------------------------------------------------------------
来自:上海&
发帖:0+0&
华为mate7-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:0+1&
华为mate7-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:保密&
发帖:49+509&
-------------------------------------------------------------------------------------------
来自:上海&
发帖:20+256&
新入的LG G4,感觉良好。
-------------------------------------------------------------------------------------------
这个家伙很懒,什么也没留下......
来自:上海&
发帖:558+8713&
“note3用起来很赞,那行喷的不知道是不是用不来-==kds官方Android客户端==-引用自13楼:我已经对回复死心了,我现在用的是Note4,尽然还有人推荐大神,小米。无语。引用自14楼:那不用大神小米用什么?三丧?小米我觉得一般用用相当不错了引用自15楼:所以谈不拢呀,都说安卓比硬件。Note4,2K屏幕,3G内存,卡插TF卡,可换电池,含指纹识别,摄像头大概1500w,还有快速充电,CPU也是64位了,软件的创新,浮动窗口,分屏显示,S-Pen都很实用。大神,华为,小米怎么比?比来比去就是比谁便宜。安卓用户就不能追求品质了吗?苹果就是高端,安卓必须低端?S6 Edge双曲面屏幕,其实我挺喜欢的,差的就是单卡。所以跑来山上问问。引用自25楼:不定式(a-free)”小米note顶配版是双卡吗,秒note4了吧-==kds官方iPhone客户端==-引用自32楼:
米粉醒醒了,刚粗略看了一下,配置还算不错,但是秒note4还差一口气。
屏幕都是2k,内存4g确实大了,摄像头像素1300w少了,电池都是3000毫安但是不能换电池,cpu都是64位应该茶的不多,tf卡能不能插未知,指纹识别无。另外需要鄙视,明明只是弧面玻璃而已,广告介绍是曲面屏幕。这不是借着三星的曲面屏偷换概念嘛。
软件我也不重复说了,苹果ios9会引入分屏功能,三星早两代机器就已经有了。
三星在国内这两年认可度不高,但不代表产品不好。几个原因,
1. 本身安卓系统的特点加上国内无法使用google play,各种山寨商城,手机助手的乱象导致系统层面问题是必然。三星也逃不过用户指责,死机,闪退。
2. 这几年国货手机便宜,我觉得是好事,但结果三星就遭来了谩骂。
3. Galaxy系列依旧定位高端,自然用的人少,对三星的一些特色功能了解和知晓度也就不够。
撇开价格,三星产品和创新我是非常认可的。比如,就在我写帖子的时候,有微信消息,桌面会弹一个浮动小圆圈是发件人的头像,点击展开消息,可以直接回复,然后隐藏,继续写帖子。不需要应用程序间切换。
另外,上月在美国出差,和同事吃饭,一桌人,1个还在用诺基亚的windows,其他70%用安卓都是三星,30%苹果。国内现在卖6000多的s6 edge,美国只要签约运营商,0首付。
-==kds官方Android客户端==-
-------------------------------------------------------------------------------------------
求目前市面上最好的双卡双待安卓机

我要回帖

更多关于 双卡双待的安卓 的文章

 

随机推荐