小米TFTips是什么ahips屏幕与ips区别

&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
突破小米悬浮窗权限控制--不需要权限的悬浮窗
摘要:突破小米悬浮窗权限控制–不需要权限的悬浮窗在上一篇文章讲了Android的Toast拓展,在原生Toast基础上对显示时长和显示动画做了二次封装,强化了Toast的部分功能。也分析了对于二次封装的ExToast设计原理,以及Toast的关键点。如果不了解的可以看看下面的链接。Toast拓展–自定义显示时间和动画常用悬浮窗与Toast之前分析过,Toast其实就是系统悬浮窗的一种,那它跟常用的系统悬浮窗有什么区别呢?先看一下常用的Andoird系统悬浮窗写法://获取应用的Co
突破小米悬浮窗权限控制–不需要权限的悬浮窗
在上一篇文章讲了Android的Toast拓展,在原生Toast基础上对显示时长和显示动画做了二次封装,强化了Toast的部分功能。也分析了对于二次封装的ExToast设计原理,以及Toast的关键点。如果不了解的可以看看下面的链接。
Toast拓展–自定义显示时间和动画常用悬浮窗与Toast
之前分析过,Toast其实就是系统悬浮窗的一种,那它跟常用的系统悬浮窗有什么区别呢?
先看一下常用的Andoird系统悬浮窗写法:// 获取应用的Context
mContext = context.getApplicationContext();
// 获取WindowManager
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mView = setUpView(context);final WindowManager.LayoutParams params = new WindowManager.LayoutParams();
params.type = WindowManager.LayoutParams.TYPE_SYSTEM_ALERT;int flags = WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM;
params.flags =
params.format = PixelFormat.TRANSLUCENT;
params.width = LayoutParams.MATCH_PARENT;
params.height = LayoutParams.MATCH_PARENT;
params.gravity = Gravity.CENTER;
mWindowManager.addView(mView, params);
再看看在Toast源码里面的写法关键代码:final WindowManager.LayoutParams params = mP
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.format = PixelFormat.TRANSLUCENT;
params.windowAnimations = com.android.internal.R.style.Animation_T
params.type = WindowManager.LayoutParams.TYPE_TOAST;
params.setTitle(&Toast&);
params.flags = WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
// 获取应用的context
Context context = mView.getContext().getApplicationContext();
// 获取WindowManager
mWM = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
if (mView.getParent() != null) {
mWM.removeView(mView);
mWM.addView(mView, mParams);
上面的两段代码大致流程都是一样的:创建WindowManager.LayoutParams做窗口的配置-&通过context获取WindowManager服务-&通过WindowManager服务添加悬浮窗View
主要的不同点在于WindowManager.LayoutParams的type。 WindowManager.LayoutParams的type有很多种,包括各种系统对话框,锁屏窗口,电话窗口等等,但这些窗口基本上都是需要权限的。
而我们平时使用的Toast,并不需要权限就能显示,那就可以尝试直接把悬浮窗的类型设成TYPE_TOAST,来定制一个不需要权限的悬浮窗。
下面是demo代码:import android.content.C
import android.graphics.PixelF
import android.util.L
import android.view.G
import android.view.LayoutI
import android.view.MotionE
import android.view.V
import android.view.WindowM
import android.widget.TextVpublic class ADToast implements View.OnTouchListener {Context mC
WindowManager.LayoutP
WindowManager mWM;
View mVprivate float mTouchStartX;
private float mTouchStartY;
public ADToast(Context context){
this.mContext =
params = new WindowManager.LayoutParams();
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
params.width = WindowManager.LayoutParams.WRAP_CONTENT;
params.format = PixelFormat.TRANSLUCENT;
params.windowAnimations = R.style.anim_
// 悬浮窗类型,整个demo的关键点
params.type = WindowManager.LayoutParams.TYPE_TOAST;
params.gravity = Gravity.LEFT | Gravity.TOP;
params.setTitle(&Toast&);
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
mWM = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
LayoutInflater inflate = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflate.inflate(R.layout.float_tips_layout, null);
mView.setOnTouchListener(this);
}public void show(){
TextView tv = (TextView)mView.findViewById(R.id.message);
tv.setText(&悬浮窗&);
if (mView.getParent() != null) {
mWM.removeView(mView);
mWM.addView(mView, params);
}public void hide(){
if(mView!=null){
mWM.removeView(mView);
}public void setText(String text){
TextView tv = (TextView)mView.findViewById(R.id.message);
tv.setText(text);
}private void updateViewPosition(){
//更新浮动窗口位置参数
params.x=(int) (x-mTouchStartX);
params.y=(int) (y-mTouchStartY);
mWM.updateViewLayout(mView, params);//刷新显示
}@Override
public boolean onTouch(View v, MotionEvent event) {
//获取相对屏幕的坐标,即以屏幕左上角为原点
x = event.getRawX();
y = event.getRawY();
Log.i(&currP&, &currX&+x+&====currY&+y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://捕获手指触摸按下动作
//获取相对View的坐标,即以此View左上角为原点
mTouchStartX =event.getX();
mTouchStartY =event.getY();
Log.i(&startP&,&startX&+mTouchStartX+&====startY&+mTouchStartY);
case MotionEvent.ACTION_MOVE: //捕获手指触摸移动动作
updateViewPosition();
case MotionEvent.ACTION_UP://捕获手指触摸离开动作
updateViewPosition();
float_tips_layout.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:gravity=&center&
android:orientation=&vertical&
android:background=&@android:color/black&&&TextView
android:id=&@+id/message&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:layout_gravity=&center_horizontal&
android:layout_marginStart=&32dp&
android:layout_marginEnd=&32dp&
android:lineSpacingExtra=&16dp&
android:maxLines=&2&
android:textColor=&@android:color/white&
android:shadowColor=&#bbffffff&
android:shadowRadius=&2.75&
android:textSize=&40sp&
/&&/LinearLayout&
然而,这种使用方式,在小米最新的MIUI8系统上行不通!
使用N5原生6.0系统测试通过,使用一加3测试通过,使用魅族pro5测试通过。只有小米MIUI8,对Toast类型悬浮窗做了权限控制。
实测在MIUI8中,打开悬浮窗权限可以显示这种Toast类型的悬浮窗。而使用原生Toast类,却不需要权限就可以显示,看来小米的系统在framework层对Toast类型的权限做了特殊处理。
但是,只要Toast能显示,就说明肯定有方法绕过去。最好的方法,就是把小米改动的framework层代码扒出来,看看原生Toast和自定义Toast类型悬浮窗在权限处理上的区别是什么,但是有一定的难度,在研究了一天无果后,先使用了第二种更容易实现的方法。
既然原生Toast不需要权限,那我们就在原生Toast的基础上继续封装拓展。上一篇Toast拓展文章已经对Toast的二次封装解释的比较详细了,下面直接上Demo代码。import android.content.C
import android.content.res.R
import android.os.H
import android.util.L
import android.view.G
import android.view.LayoutI
import android.view.MotionE
import android.view.V
import android.view.WindowM
import android.widget.TextV
import android.widget.Timport java.lang.reflect.F
import java.lang.reflect.InvocationTargetE
import java.lang.reflect.Mpublic class MiExToast implements View.OnTouchListener {
private static final String TAG = &ExToast&;public static final int LENGTH_ALWAYS = 0;
public static final int LENGTH_SHORT = 2;
public static final int LENGTH_LONG = 4;private T
private Context mC
private int mDuration = LENGTH_SHORT;
private int animations = -1;
private boolean isShow =private Object mTN;
private WindowManager mWM;
private WindowManager.LayoutP
private View mVprivate float mTouchStartX;
private float mTouchStartY;
private Handler handler = new Handler();public MiExToast(Context context){
this.mContext =
if (toast == null) {
toast = new Toast(mContext);
LayoutInflater inflate = (LayoutInflater)
mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mView = inflate.inflate(R.layout.float_tips_layout, null);
mView.setOnTouchListener(this);
}private Runnable hideRunnable = new Runnable() {
public void run() {
* Show the view for the specified duration.
public void show(){
if (isShow)
TextView tv = (TextView)mView.findViewById(R.id.message);
tv.setText(&悬浮窗&);
toast.setView(mView);
show.invoke(mTN);
} catch (InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
//判断duration,如果大于#LENGTH_ALWAYS 则设置消失时间
if (mDuration & LENGTH_ALWAYS) {
handler.postDelayed(hideRunnable, mDuration * 1000);
* Close the view if it's showing, or don't show it if it isn't showing yet.
* You do not normally have to call this.Normally view will disappear on its own
* after the appropriate duration.
public void hide(){
if(!isShow)
hide.invoke(mTN);
} catch (InvocationTargetException | IllegalAccessException e) {
e.printStackTrace();
}public void setView(View view) {
toast.setView(view);
}public View getView() {
return toast.getView();
* Set how long to show the view for.
* @see #LENGTH_SHORT
* @see #LENGTH_LONG
* @see #LENGTH_ALWAYS
public void setDuration(int duration) {
mDuration =
}public int getDuration() {
}public void setMargin(float horizontalMargin, float verticalMargin) {
toast.setMargin(horizontalMargin,verticalMargin);
}public float getHorizontalMargin() {
return toast.getHorizontalMargin();
}public float getVerticalMargin() {
return toast.getVerticalMargin();
}public void setGravity(int gravity, int xOffset, int yOffset) {
toast.setGravity(gravity,xOffset,yOffset);
}public int getGravity() {
return toast.getGravity();
}public int getXOffset() {
return toast.getXOffset();
}public int getYOffset() {
return toast.getYOffset();
}public static MiExToast makeText(Context context, CharSequence text, int duration) {
Toast toast = Toast.makeText(context,text,Toast.LENGTH_SHORT);
MiExToast exToast = new MiExToast(context);
exToast.toast =
exToast.mDuration =return exT
}public static MiExToast makeText(Context context, int resId, int duration)
throws Resources.NotFoundException {
return makeText(context, context.getResources().getText(resId), duration);
}public void setText(int resId) {
setText(mContext.getText(resId));
}public void setText(CharSequence s) {
toast.setText(s);
}public int getAnimations() {
}public void setAnimations(int animations) {
this.animations =
}private void initTN() {
Field tnField = toast.getClass().getDeclaredField(&mTN&);
tnField.setAccessible(true);
mTN = tnField.get(toast);
show = mTN.getClass().getMethod(&show&);
hide = mTN.getClass().getMethod(&hide&);Field tnParamsField = mTN.getClass().getDeclaredField(&mParams&);
tnParamsField.setAccessible(true);
params = (WindowManager.LayoutParams) tnParamsField.get(mTN);
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;/**设置动画*/
if (animations != -1) {
params.windowAnimations =
}/**调用tn.show()之前一定要先设置mNextView*/
Field tnNextViewField = mTN.getClass().getDeclaredField(&mNextView&);
tnNextViewField.setAccessible(true);
tnNextViewField.set(mTN, toast.getView());mWM = (WindowManager)mContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
} catch (Exception e) {
e.printStackTrace();
setGravity(Gravity.LEFT | Gravity.TOP,0 ,0);
}private void updateViewPosition(){
//更新浮动窗口位置参数
params.x=(int) (x-mTouchStartX);
params.y=(int) (y-mTouchStartY);
mWM.updateViewLayout(toast.getView(), params);//刷新显示
}@Override
public boolean onTouch(View v, MotionEvent event) {
//获取相对屏幕的坐标,即以屏幕左上角为原点
x = event.getRawX();
y = event.getRawY();
Log.i(&currP&, &currX&+x+&====currY&+y);
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://捕获手指触摸按下动作
//获取相对View的坐标,即以此View左上角为原点
mTouchStartX =event.getX();
mTouchStartY =event.getY();
Log.i(&startP&,&startX&+mTouchStartX+&====startY&+mTouchStartY);
case MotionEvent.ACTION_MOVE: //捕获手指触摸移动动作
updateViewPosition();
case MotionEvent.ACTION_UP://捕获手指触摸离开动作
updateViewPosition();
example:MiExToast miToast = new MiExToast(getApplicationContext());
miToast.setDuration(MiExToast.LENGTH_ALWAYS);
miToast.setAnimations(R.style.anim_view);
miToast.show();
上面的Demo类是基于上一篇文章Toast拓展–自定义显示时间和动画,进行再次拓展做出来的,它只是一个Demo,并不是工具类,不能直接拿来使用。
下面根据这个Demo,我们来分析它的原理。
下面有三个关键点: 1. Toast是可以自定义View的 2. 悬浮窗的触摸需要修改WindowManager.LayoutParams.flags,设置WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL 3. 刷新悬浮窗,只需要获得WindowManager实例,调用updateViewLayout并传入View和LayoutParams即可
经过上一篇文章的讲解,对于Toast的LayoutParams实例我们可以通过反射获得,并且给他设置上可触摸的flag。关注上面代码的initTN()方法,获得的LayoutParams实例需要保持引用,因为后面还需要用上。Field tnParamsField = mTN.getClass().getDeclaredField(&mParams&);
tnParamsField.setAccessible(true);
params = (WindowManager.LayoutParams) tnParamsField.get(mTN);
params.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
然后是对二次封装的Demo类MiExToast里面的Toast实例设置View。这个应该很容易理解,Toast是可以自定义View的,设置自己的View作为悬浮窗。同时,可以对View添加一些自定义的Touch事件,在这个Demo中用户可以随意拖动悬浮窗。public void init(){
mView = inflate.inflate(R.layout.float_tips_layout, null);
mView.setOnTouchListener(this);
toast.setView(mView);
}@Override
public boolean onTouch(View v, MotionEvent event) {
//获取相对屏幕的坐标,即以屏幕左上角为原点
x = event.getRawX();
y = event.getRawY();
最后就是对悬浮窗的更新,只需要通过context获取到WindowManager,即可调用updateViewLayout对悬浮窗进行更新。private WindowManager.LayoutPprivate void updateViewPosition(){
mWM.updateViewLayout(toast.getView(), params);//刷新显示
大致原理就是这样,借助原生Toast显示自定义的悬浮窗,越过小米MIUI8对于Toast类型悬浮窗的权限封锁。
最后上一个小米系统示例图:
转载请注明出处!
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
邮箱低至5折
推荐购买再奖现金,最高25%
&200元/3月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
突破小米悬浮窗权限控制--不需要权限的悬浮窗相关信息,包括
的信息,所有突破小米悬浮窗权限控制--不需要权限的悬浮窗相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
举报视频:
举报原因(必填):
请说明举报原因(300字以内):
请输入您的反馈
举报理由需要输入300字以内
感谢您的反馈~
请勿重复举报~
请刷新重试~
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
小米MIX2 屏幕断触实测
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
30秒后自动关闭
小米MIX2 屏幕断触实测">小米MIX2 屏幕断触实测
请选择打赏金额:
播放量12.7万
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
热门短视频推荐
Copyright (C) 2018 & All Rights Reserved
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
正在为您下载爱奇艺客户端安装后即可快速下载海量视频
正在为您下载爱奇艺客户端安装后即可免费观看1080P视频
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
后才可以领取积分哦~
每观看视频30分钟
+{{data.viewScore}}分
{{data.viewCount}}/3
{{if data.viewCount && data.viewCount != "0" && data.viewCount != "1" && data.viewCount != "2" }}
访问泡泡首页
+{{data.rewardScore}}分
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}1{{else}}0{{/if}}/1
{{if data.rewardCount && data.rewardCount != 0 && data.getRewardDayCount != 0}}
+{{data.signScore}}分
{{data.signCount}}/1
{{if data.signCount && data.signCount != 0}}
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制很多米粉还不清楚小米 6 的防水工艺到底体现在哪些方面,今天我们就来聊一聊,小米 6 是如何做到生活级防水的,以及如何正确使用这些防水设计。
1、屏幕防水
屏幕是手机最主要的部件之一,也是整个手机中面积最大的部件,如何对手机做到屏幕防水呢?
众所周知,屏幕本身是二氧化硅质地,水分子无法透过,真正需要密封的地方在于屏幕与边框之间的缝隙。小米 6 的屏幕面板与边框之间,采用了防水胶进行密封处理,可以最大限度确保手机屏幕上的水渍不会在溢出屏幕边缘后,渗入边框与屏幕之间的缝隙。
如图,黄色部分为液体胶(Glue),绿色部分为 2.5D 保护玻璃(Cover glass),紫色部分是不锈钢边框(Housing)
屏幕位置不仅仅是屏幕四周,在屏幕顶部的听筒网孔处,也连续点注了液体胶,这样,屏幕与边框通过液体胶粘在一起,形成密封腔体,所以,水无法进入机体腔体内。
黄色部分为环绕屏幕一圈的液体胶
有些同学可能会问到,手机屏幕碎裂后,屏幕会不会进水?答案是不一定。轻微裂痕的情况下,水分子会由于表面张力以及屏幕疏油层的排斥作用,无法进一步深入缝隙;但如果裂缝如蛛网般密布,缝隙较宽,甚至有材质掉落的情况时,液体可能会通过碎裂的缝隙深入内屏。建议碎屏后尽快更换一块新屏幕。
2. 麦克风防水
小米 6 的麦克风(Mic)分为主 Mic 与副 Mic,仔细观察可以发现,设计上,主 Mic 位置设有通道,使主 Mic 与外界相通,通道上加有防水透气膜(如图所示),可以将水阻在防水透气膜(waterproof film)以外,同时又不影响空气的流通。
防水膜工艺微观示意图
机体腔内,通道以外的地方与通道隔绝,可以防止水由此通道进入机体腔内。其位置如下面两图所示:
左边是主麦克,右边是扬声器
副麦克位置示意图(手机顶端)
小米手机上是不存在所谓的 “Reset” 重置键的,因此请不要用尖锐物体去捅手机上的小孔。它们可能只是降噪麦或者出音孔,一旦捅穿防水膜甚至是振膜,修手机指日可待。
3、Type-C 接口
Type-C 接口位置是机身四周开口空间最大的部位,该部分由于需要经常对手机充电,故无法做完全密封处理。但是在 Type-C 母座接口的补强钢板四周使用橡胶环进行了全包裹处理,杜绝液体通过补强钢板与手机边框之间的缝隙进入机体内部。
Type-C 接口位置防水工艺示意图
日常插拔 USB 充电线的过程中,如果 USB 线的公头上或者充电母座上带有灰尘、砂砾等异物的话,可能会积压在充电母座中,造成挤压、摩擦橡胶环和电路板金手指,从而降低密封效果甚至导致无法充电。因此,日常使用时,务必保证充电线接头和手机充电接口的干净整洁。
4、音量、开关侧键位置
侧键 FPC(柔性电路板)设计在机体腔体外部,整个音量键靠近机腔的部分由防水压敏胶(Waterproof PSA)进行包裹,阻断水分渗入。
FPC 则通过小孔与内部线路连接,小孔内设计有一枚软胶件,软胶件的尺寸大于小孔的尺寸,这种配合方法我们称之为过盈配合。安装后,软胶件被挤压,填满整个小孔,孔内无缝,水无法进入机体腔体内。
侧键防水 PSA 示意图
音量开关侧键由于经常按压,长期下来可能会导致底衬胶条的形变从而影响防水效果。同时,为了保证胶条处于静态时的最佳防水效果,请勿在手机处于浸液状态时频繁按压按键。
5、SIM 卡位置
细心观察的米粉们可能会发现,自己购买的小米 6 在 SIM 卡托周围有一圈软胶。这层软胶其实就是 SIM 部位的防水设计。SIM 卡托安装后,软胶与壳体 SIM 卡槽为过盈配合,软胶被挤压,填充于 SIM 卡托与卡槽之间的缝隙中,将水阻在机体腔外。
SIM 卡及卡针孔防水示意图
小米 6 的 SIM 卡托旁边是有一个小孔的,戳一下 SIM 卡托才会弹出。当手机进水时,液体会不会通过这个小孔进入呢?
其实大可不必担心,SIM 卡针孔内,有设计安装一枚防水塞子,塞子头部有两圈直径较大凸环,与 SIM 卡针孔为过盈配合,径向上实现 SIM 卡针孔无缝隙,将水阻在机体腔外。
文章转载自网络,作者观点不代表本网站立场,如需处理请联系客服
小米商城其它文章
都说父爱如山,小时候,父亲是我们的依靠,是我们的港湾。如今,我们长大了,父亲却老了,这个时候的父亲,需要的却是来自我们的关爱。父亲节,马上就要到来,送父亲的礼物你准备好了吗?如果要送一款适合父亲的手机,小米最新发布的搭载全新12nm制程,主频2.0GHz高性能
亲爱的米粉们,还记得上一次6.18元上门维修推文最后留下的悬念吗?小编今天就给大家揭晓这个神秘惊喜!提问:上门维修遇上小米618狂欢会擦出什么样的火花呢?答案就是上门费一降到底!!!仅需0.01元!(原价60元)优惠价格仅限6月16日至6月18日三天哟~快快抢购!1分钱修
6月16日,小米之家全球第二家旗舰店在南京景枫KINGMO盛大开业,这家店将作为小米8周年献礼,伴随小米8的上市而推出的另一个标志小米新零售发展里程的“旗舰之作”——门店宣传主题也定为“为8而来”。一大早,来自五湖四海的米粉和用户就从四面八方汇聚而来,场面极其火
拍照,可以说是目前智能手机最受关注的功能,没有之一。但你知道,究竟什么才是决定手机拍照能力的因素吗?是相机使用的硬件?还是图像处理的算法?或者之后的软件调校?刚刚发布的小米8周年纪念旗舰小米8用实际表现告诉你,前两者很重要,但人们往往忽视了调校的作用。
“平衡神器”——米家手持云台发布。6月16日0点将正式登陆小米商城、小米有品、京东、天猫、苏宁易购,小米之家同期开售。三轴机械增稳让每个画面都稳定流畅米家手持手机云台使用高纤复合轻量材料制作而成,机械刚性更强,整机重量仅476g,同时采用高精度姿态传感器与全
今年是第21届世界杯,6月14日到7月15日,32支球队将为大力神杯共展开64场比赛的争夺。作为足球界的顶级赛事,众多平时在俱乐部呼风唤雨的世界级球星们将代表各自国家出场。看比赛更多的是看球星的精彩表现,你最喜欢哪位球星?作为足坛史上的“绝代双骄”,梅西、C罗分别
《山海经》里有种神奇的树,叫做迷谷。传言佩戴迷谷的树枝出行,就不会迷路。如果现在还有这种树的话,我一定要买一棵送给新入职的小编妹子。要知道,在入职当天下班的时候,妹子绕着五彩城步行两小时都没找到地铁站…类似于这样听妹子说,当天情形十分可怕,“导航显示
每一次,当我问老爸,你的手机是不是该换了?他总会说,“浪费那么多钱干嘛,这手机挺好,够用了。”每一次,当我又换了新手机的时候,老爸的手机也跟着换了。拿着我淘汰下来的旧手机,他总是笑眯眯地说,“这手机不错,挺好用的,老爸接着用。”曾经年少时,背最新的书
秋到夏南到北家乡到远方往后,最远的距离却成了我到你写不完的作业聊不完的话题数不清的车票无期限的假条每一刻都成了我想要定格的瞬间拿起你的小米手机记录有“AI”的毕业季吧喜欢就戳右下角,把小心心点亮吧...
各位米粉好啊!小编说你们对我——红米6 以及我的弟弟——红米6A 特别感兴趣,考虑到她的介绍远不及我们自我介绍的效果好。所以今天我们来给大家自我介绍一下。红米6我叫红米6,是新一代的红米国民手机。为了更加符合米粉们的期待,我为自己进行了升级换代。第一,我换了
想知道红米6 和红米6A 谁更适合你吗?想看到最新鲜最一手的真机评测吗?想赢取购买资格等超多福利吗?1小时后看直播统统满足你点击图片或识别小程序码看直播猛戳下方小程序立刻看直播除了小米商城你还可以选择这些平台进行观看小米直播、小米社区、今日头条京东直播、天
6月12日,国民手机新品发布会,全新红米6/红米6A正式发布:红米6,售价799元起首款12nm制程工艺的千元机、后置1200万 AI双摄、5.45''小巧全面屏红米6A,售价599元后置1300万高清相机、全新12nm制程2.0GHz处理器、“小杨柳腰”纤薄好手感红米6AI双摄,小屏高性能新一代国
作为小米新零售的重磅产品,小米6X 上市后好评如潮,“前后2000万,拍人更美”更是受到众多女性用户喜爱。小米8周年618狂欢,小米6X 4GB+32GB版立减100元,不变的高性能,更优惠的价格,仅售1399元。更大容量,更多享受,4GB+64GB版赠价值49元移动电源。高颜值多彩全金属
最近经常有人向小编提问“怎么才能成为更受欢迎的人?”小编仔细研究了一下受欢迎人群的特质大家务必好好学习做好笔记争取早日成为万人迷最受欢迎的男生类型往往时尚又睿智他不一定是潮流boy但一定干净阳光、活力四射认真起来又充满睿智任凭哪个女生看都会是一脸崇拜就像
闪修侠上门维修小米手机上门维修于日正式上线。业务拓展初期我们只开放了北京、杭州、武汉、南京四个城市,支持除小米MIX外的所有小米品牌的手机,业务上线后受到了用户们的认可!赢得了用户们的好评!上门维修,清凉一夏小米公司在探索“新零售”的同时,也在
最后关头,给大家再爆2个料:1、新品也不止一款...2、红米6 证件照来啦!6月12日下午2点,直播见!新一代国民手机红米,将会有哪些全新升级?还有哪些新品发布?明天下午2点,为你一一揭晓!46家直播合作平台同步视频/音频/图文直播长按二维码关注小米商城米粉之家...
小米8 此次除了标准的黑白两种配色,还拥有两种特别颜色:蓝色和金色。蓝色版本采用了Film工艺,通过极为细微的两种特殊纹理间隔排布复合而成。在如此精致的纹路下,小米8蓝色版在阳光下呈现出了与众不同的流光效果。小米8 的金色版本在背部相机环和指纹环还特别加入了1
最近一种名为土味情话的表白方式风靡了网络如果你对它一窍不通很可能错过真爱下面,就来测测你的土味情话等级吧已知:男女双方深爱彼此,且求生欲强01男友对你说:你这个人不适合谈恋爱。他的下一句最可能是点击空白处查看答案适合结婚02男友对你说:你最近是不是胖了?
永远相信美好的事情即将发生。从初代红米,到即将发布的红米6,历代红米系列机型,你都用过哪些?红米手机的“前世今生”,你还记得多少?红米6国民手机新品发布会6月12日,北京见!长按二维码关注小米商城米粉之家喜欢红米手机的请点赞...
日前小米8周年旗舰手机:小米8 正式发布,其搭载高通骁龙845移动平台。作为目前安卓手机阵营性能最强的移动处理器平台之一,小米8 上的这颗骁龙845处理器的具体性能表现究竟如何呢?下面我们就来详细解析一下。(温馨提示:如果觉得长可以直接看最下面的总结~)小米8:跑

我要回帖

更多关于 ips屏幕 的文章

 

随机推荐