1.setting中改变USB状态

    在setting中关于改变USB状态的有两个重要的类:UsbSettings和UsbSettingsExts。UsbSettings实际上是一个PreferenceFragment,它负责展示界面;UsbSettingsExts负责保存USB状态的。

UsbSettings.java

 @Overridepublic boolean onPreferenceChange(Preference preference, Object newValue) {// Don't allow any changes to take effect as the USB host will be disconnected, killing// the monkeysif (Utils.isMonkeyRunning()) {return true;}// If this user is disallowed from using USB, don't handle their attempts to change the// setting.UserManager um = (UserManager) getActivity().getSystemService(Context.USER_SERVICE);if (um.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {return true;}String function = mUsbExts.getFunction(preference);boolean makeDefault = mUsbExts.isMakeDefault(preference);mUsbManager.setCurrentFunction(function, makeDefault);//改变USB状态updateToggles(function);mUsbExts.setNeedUpdate(false);return true;}

UsbSettingsExts.java

    public String getFunction(Preference preference) {String function = FUNCTION_NONE;if (preference == mMtp && mMtp.isChecked()) {function = UsbManager.USB_FUNCTION_MTP;} else if (preference == mPtp && mPtp.isChecked()) {function = UsbManager.USB_FUNCTION_PTP;} else if (preference == mUms && mUms.isChecked()) {function = UsbManager.USB_FUNCTION_MASS_STORAGE;} else if (preference == mCharge && mCharge.isChecked()) {function = UsbManager.USB_FUNCTION_CHARGING_ONLY;} else if (preference == mBicr && mBicr.isChecked()) {function = UsbManager.USB_FUNCTION_BICR;}return function;}

下面来看下USB的管理类UsbManager.java

    public void setCurrentFunction(String function, boolean makeDefault) {try {mService.setCurrentFunction(function, makeDefault);//调用usbservice,改变USB状态} catch (RemoteException e) {Log.e(TAG, "RemoteException in setCurrentFunction", e);}}

UsbService.java

    @Overridepublic void setCurrentFunction(String function, boolean makeDefault) {mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USB, null);// If attempt to change USB function while file transfer is restricted, ensure that// the current function is set to "none", and return.UserManager userManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);if (userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER)) {if (mDeviceManager != null) mDeviceManager.setCurrentFunctions("none", false);return;}if (mDeviceManager != null) { mDeviceManager.setCurrentFunctions(function, makeDefault);} else {throw new IllegalStateException("USB device mode not supported");}}

UsbDeviceManager.java

    public void setCurrentFunctions(String functions, boolean makeDefault) {if (DEBUG) Slog.d(TAG, "setCurrentFunctions(" + functions + ") default: " + makeDefault);mHandler.sendMessage(MSG_SET_CURRENT_FUNCTIONS, functions, makeDefault);}
case MSG_SET_CURRENT_FUNCTIONS:String functions = (String)msg.obj;boolean makeDefault = (msg.arg1 == 1);mSettingUsbCharging = false;mSettingUsbBicr = false;/* In BICR evo, it's hard to confirm that the current disconnect is caused by switching usb function or unplugging usb cable*//* So add a flag to know it*/mIsUserSwitch = true;if (functions != null && functions.equals(UsbManager.USB_FUNCTION_CHARGING_ONLY)) {mSettingUsbCharging = true;mCurrentFunctions = removeFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_MTP);mCurrentFunctions = removeFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_PTP);updateUsbState();Slog.d(TAG, "handleMessage - MSG_SET_CURRENT_FUNCTION - CHARGING_ONLY - makeDefault: " + makeDefault);} else if (functions != null && functions.equals(UsbManager.USB_FUNCTION_BICR)) {mSettingUsbBicr = true;Slog.d(TAG, "handleMessage - MSG_SET_CURRENT_FUNCTION - BICR - makeDefault: " + makeDefault);} else if (functions == null && mDefaultFunctions.equals(UsbManager.USB_FUNCTION_CHARGING_ONLY)) {functions = mDefaultFunctions;mSettingUsbCharging = true;makeDefault = true;updateUsbState();Slog.d(TAG, "handleMessage - MSG_SET_CURRENT_FUNCTION - [Tethering Off] USB_FUNCTION_CHARGING_ONLY - makeDefault: " + makeDefault);} setEnabledFunctions(functions, makeDefault);mIsUserSwitch = false;//ALPS00428998if(mMtpAskDisconnect) mMtpAskDisconnect = false;//ALPS00428998Slog.d(TAG, "handleMessage - MSG_SET_CURRENT_FUNCTION - functions: " + functions);break;
 private void setEnabledFunctions(String functions, boolean makeDefault) {if (DEBUG) {Slog.d(TAG, "setEnabledFunctions - functions: " + functions);Slog.d(TAG, "setEnabledFunctions - mDefaultFunctions: " + mDefaultFunctions);Slog.d(TAG, "setEnabledFunctions - mCurrentFunctions: " + mCurrentFunctions);Slog.d(TAG, "setEnabledFunctions - mSettingFunction: " + mSettingFunction);}if (mCurrentFunctions.equals(UsbManager.USB_FUNCTION_CHARGING_ONLY)) {Slog.d(TAG, "setEnabledFunctions - [Disable USB Charging]");SystemProperties.set("sys.usb.charging","no");}if (containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_BICR)) {if (mIsUsbBicrEvo) {Slog.w(TAG, "====mIsPcKnowMe:" + mIsPcKnowMe + ", mIsBicrSet:" + mIsBicrSet + ", mHwDisconnected:" + mHwDisconnected);if (mIsBicrSet && mHwDisconnected) {Slog.d(TAG, "Do not set sys.usb.bicr=no again!!!");} else {Slog.d(TAG, "setEnabledFunctions1 - [Disable USB BICR]");SystemProperties.set("sys.usb.bicr","no");//设置为光驱}} else {Slog.d(TAG, "setEnabledFunctions2 - [Disable USB BICR]");SystemProperties.set("sys.usb.bicr","no");}}if (mIsUsbBicrEvo && functions != null) {if( containsFunction(functions, UsbManager.USB_FUNCTION_RNDIS) || containsFunction(functions, UsbManager.USB_FUNCTION_EEM) ) {mDefaultFunctions = mSettingFunction;}}// Do not update persystent.sys.usb.config if the device is booted up// with OEM specific mode.if (functions != null && makeDefault && !needsOemUsbOverride() && !mIsUsbBicrEvo) {if(bEvdoDtViaSupport == true) {//VIA-START VIA USBif(Settings.Secure.getInt(mContentResolver,Settings.Secure.ADB_ENABLED, 0) > 0){mAdbEnabled = true;updateAdbNotification();}//VIA-END VIA USB}mSettingFunction = functions;if (mAdbEnabled && !mSettingUsbCharging) {functions = addFunction(functions, UsbManager.USB_FUNCTION_ADB);} else {functions = removeFunction(functions, UsbManager.USB_FUNCTION_ADB);}String acm_idx = SystemProperties.get("sys.usb.acm_idx", "");Slog.d(TAG, "sys.usb.acm_idx=" + acm_idx + ",mAcmPortIdx=" + mAcmPortIdx);if ((mAcmEnabled || ((acm_idx!=null) && !acm_idx.isEmpty()) ||((mAcmPortIdx!=null) && !mAcmPortIdx.isEmpty())) &&!mSettingUsbCharging && !mSettingUsbBicr) {int port_num = 0;String port_str = "";if(!acm_idx.isEmpty()) {port_num = validPortNum(acm_idx);if(port_num > 0 ) {port_str = acm_idx;mAcmPortIdx = acm_idx;}} else if(!mAcmPortIdx.isEmpty()) {port_num = validPortNum(mAcmPortIdx);if(port_num > 0 )port_str = mAcmPortIdx;}Slog.d(TAG, "port_num=" + port_num);if (port_num > 0) {Slog.d(TAG, "Write port_str=" + port_str);writeFile(ACM_PORT_INDEX_PATH, port_str);}/*Add ACM or Dual ACM at the tail. Even with ADB.*/functions = removeFunction(functions, UsbManager.USB_FUNCTION_ACM);functions = removeFunction(functions, UsbManager.USB_FUNCTION_DUAL_ACM);String tmp = ( (port_num == 2) ? UsbManager.USB_FUNCTION_DUAL_ACM : UsbManager.USB_FUNCTION_ACM);functions = addFunction(functions, tmp);//Slog.d(TAG, "set persist.sys.port_index=" + port_str);/*Keep the port info. We need it when reboot.*///SystemProperties.set("persist.sys.port_index", port_str);} else {functions = removeFunction(functions, UsbManager.USB_FUNCTION_ACM);functions = removeFunction(functions, UsbManager.USB_FUNCTION_DUAL_ACM);SystemProperties.set("persist.sys.port_index", "");}Slog.d(TAG, "setEnabledFunctions - functions: " + functions);if (!mDefaultFunctions.equals(functions) || containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_BICR) || containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_RNDIS)) {if (!setUsbConfig("none")) {Slog.e(TAG, "Failed to disable USB");// revert to previous configuration if we failsetUsbConfig(mCurrentFunctions);return;}// setting this property will also change the current USB state// via a property triggerSystemProperties.set("persist.sys.usb.config", functions);if (mSettingFunction.equals(UsbManager.USB_FUNCTION_CHARGING_ONLY)) {if (mAdbEnabled) {SystemProperties.set("persist.service.adb.enable", "1");} else {SystemProperties.set("persist.service.adb.enable", "0");}} else {SystemProperties.set("persist.service.adb.enable", "");}if (waitForState(functions)) {mCurrentFunctions = functions;mDefaultFunctions = functions;} else {Slog.e(TAG, "Failed to switch persistent USB config to " + functions);// revert to previous configuration if we fail SystemProperties.set("persist.sys.usb.config", mDefaultFunctions);}} else {//VIA-START VIA USBif(bEvdoDtViaSupport == true) {if(mDefaultFunctions.equals(functions) &&(mCurrentFunctions.contains(UsbManager.USB_FUNCTION_VIA_CDROM)||mCurrentFunctions.contains(Bypass.USB_FUNCTION_BYPASS))){Slog.i(TAG, "reset DefaultFunctions!");if (!setUsbConfig("none")) {Slog.e(TAG, "Failed to disable USB");// revert to previous configuration if we failsetUsbConfig(mCurrentFunctions);return;}if (setUsbConfig(functions)) {mCurrentFunctions = functions;} else {Slog.e(TAG, "Failed to switch USB config to " + functions);// revert to previous configuration if we failsetUsbConfig(mCurrentFunctions);}}}//VIA-END VIA USB}} else {if (functions == null) {functions = mDefaultFunctions;if(bEvdoDtViaSupport == true){mUsbSetBypassWithTether=false ;}}//VIA-START VIA USBif(bEvdoDtViaSupport == true) {//adb can't be open with bypass and via cdromif(Settings.Secure.getInt(mContentResolver,Settings.Secure.ADB_ENABLED, 0) > 0){mAdbEnabled = true;updateAdbNotification();}}//VIA-END VIA USB// Override with bootmode specific usb mode if neededfunctions = processOemUsbOverride(functions);mSettingFunction = functions;if(bEvdoDtViaSupport == true){if ((containsFunction(functions, UsbManager.USB_FUNCTION_RNDIS) || containsFunction(functions, UsbManager.USB_FUNCTION_EEM)) && mUsbSetBypassWithTether){					functions = addFunction(functions, Bypass.USB_FUNCTION_BYPASS);Slog.d(TAG, "add the bypass functions to tethering : " + functions);}}if (mIsUsbBicrEvo && !mIsPcKnowMe && !mSettingUsbCharging) {functions = UsbManager.USB_FUNCTION_BICR;mSettingFunction = functions;}if (mAdbEnabled && !mSettingUsbCharging) {functions = addFunction(functions, UsbManager.USB_FUNCTION_ADB);} else {functions = removeFunction(functions, UsbManager.USB_FUNCTION_ADB);}String acm_idx = SystemProperties.get("sys.usb.acm_idx", "");Slog.d(TAG, "sys.usb.acm_idx=" + acm_idx);if ((mAcmEnabled || ((acm_idx!=null) && !acm_idx.isEmpty()) ||((mAcmPortIdx!=null) && !mAcmPortIdx.isEmpty())) &&!mSettingUsbCharging && !mSettingUsbBicr) {int port_num = 0;String port_str = "";if(!acm_idx.isEmpty()) {port_num = validPortNum(acm_idx);if(port_num > 0 ) {port_str = acm_idx;mAcmPortIdx = acm_idx;}} else if(!mAcmPortIdx.isEmpty()) {port_num = validPortNum(mAcmPortIdx);if(port_num > 0 )port_str = mAcmPortIdx;}Slog.d(TAG, "port_num=" + port_num);if (port_num > 0) {Slog.d(TAG, "Write port_str=" + port_str);writeFile(ACM_PORT_INDEX_PATH, port_str);}/*Add ACM or Dual ACM at the tail. Even with ADB.*/functions = removeFunction(functions, UsbManager.USB_FUNCTION_ACM);functions = removeFunction(functions, UsbManager.USB_FUNCTION_DUAL_ACM);String tmp = ( (port_num == 2) ? UsbManager.USB_FUNCTION_DUAL_ACM : UsbManager.USB_FUNCTION_ACM);functions = addFunction(functions, tmp);} else {functions = removeFunction(functions, UsbManager.USB_FUNCTION_ACM);functions = removeFunction(functions, UsbManager.USB_FUNCTION_DUAL_ACM);}Slog.d(TAG, "else setEnabledFunctions, functions: " + functions + ", mCurrentFunctions: " + mCurrentFunctions);if (!mCurrentFunctions.equals(functions) || containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_BICR) || (mIsUsbBicrEvo && !mIsPcKnowMe) || mMtpAskDisconnect) {if (mIsUsbBicrEvo) {Slog.w(TAG, "====mIsPcKnowMe:" + mIsPcKnowMe + ", mIsBicrSet:" + mIsBicrSet + ", mHwDisconnected:" + mHwDisconnected);if (mIsBicrSet && !mIsPcKnowMe && mHwDisconnected && mCurrentFunctions.equals(functions) && containsFunction(mCurrentFunctions, UsbManager.USB_FUNCTION_BICR)) {Slog.e(TAG, "Do not do setUsbConfig() again!!!");return;} else {mIsBicrSet = true;}}if (!setUsbConfig("none")) {Slog.e(TAG, "Failed to disable USB");// revert to previous configuration if we failsetUsbConfig(mCurrentFunctions);return;}if (setUsbConfig(functions)) {mCurrentFunctions = functions;} else {Slog.e(TAG, "Failed to switch USB config to " + functions);// revert to previous configuration if we failsetUsbConfig(mCurrentFunctions);}}}/* reset this value after trigger setconfig, i.e. one time JOB */	if(bEvdoDtViaSupport == true){mUsbSetBypassWithTether=false ;}}

下面我们来看下init.usb.rc

on property:sys.usb.config=nonestop adbdwrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/bDeviceClass 0setprop sys.usb.state ${sys.usb.config}# adb only USB configuration
# This is the fallback configuration if the
# USB manager fails to set a standard configuration
on property:sys.usb.config=adbwrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 4EE7write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1start adbdsetprop sys.usb.state ${sys.usb.config}# USB accessory configuration
on property:sys.usb.config=accessorywrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 2d00write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1setprop sys.usb.state ${sys.usb.config}# USB accessory configuration, with adb
on property:sys.usb.config=accessory,adbwrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 2d01write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1start adbdsetprop sys.usb.state ${sys.usb.config}# audio accessory configuration
on property:sys.usb.config=audio_sourcewrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 2d02write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1setprop sys.usb.state ${sys.usb.config}# audio accessory configuration, with adb
on property:sys.usb.config=audio_source,adbwrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 2d03write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1start adbdsetprop sys.usb.state ${sys.usb.config}# USB and audio accessory configuration
on property:sys.usb.config=accessory,audio_sourcewrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 2d04write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1setprop sys.usb.state ${sys.usb.config}# USB and audio accessory configuration, with adb
on property:sys.usb.config=accessory,audio_source,adbwrite /sys/class/android_usb/android0/enable 0write /sys/class/android_usb/android0/idVendor 18d1write /sys/class/android_usb/android0/idProduct 2d05write /sys/class/android_usb/android0/functions ${sys.usb.config}write /sys/class/android_usb/android0/enable 1start adbdsetprop sys.usb.state ${sys.usb.config}# Used to set USB configuration at boot and to switch the configuration
# when changing the default configuration
on property:persist.sys.usb.config=*setprop sys.usb.config ${persist.sys.usb.config}

从上面可以看出,设置persist.sys.usb.config后sys.usb,config跟着改变,然后向节点写入数据改变状态




查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. VS2010(英文版)打包部署自动安装数据库

    上周第一次打包自己的系统时,在别人电脑上使用不了,因为远程连接不了我的数据库,所以要想在别人的电脑上运行我的系统则需要手动附加我的数据库。 下面我来为大家介绍一种方法:在打包程序时将数据库一起打包,这样安装程序的时候会自动附加数据库(前提是该电脑上有SQL SER…...

    2024/5/2 5:01:15
  2. 《HTML5与CSS3实例教程》

    《HTML5与CSS3实例教程》 基本信息 作者: (美)Brian P. Hogan 译者: 卢俊祥 丛书名: 图灵程序设计丛书 出版社:人民邮电出版社 ISBN:9787115363404 上架时间:2014-7-25 出版日期:2014 年8月 开本:16开 页码:1 版次:1-1 所属分类:计算机 > 数码/设计 > CSS …...

    2024/4/21 8:30:53
  3. 将x86平台的Linux控制台重定向到串口

    一般地,安装在PC的Linux是使用鼠标、键盘作为输入源,显示器作为输出显示,但有些X86的设备,如工控机等,为了节省成本,会去掉认为无用的外设接口,以致熟悉了PC的人不习惯。一个设备,没有鼠标、键盘、显示器,但只要还有串口,还是可以控制的。本文将在一个具备串口的设备…...

    2024/5/2 1:50:21
  4. 关于JavaScript常用字符串分割截取的几种方法和区别

    关于JavaScript常用字符串分割截取的几种方法和区别 上周在项目中遇到一个需要将文件的类型单独展示出来的问题,于是想到了字符串分割。今天整理了一些常用的分割截取方法。 1. substring(start,stop) 用于提取字符串中介于两个指定下标之间的字符。 start表示开始截取的下角…...

    2024/5/2 5:13:22
  5. Activity---preferenceActivity

    <span style="font-family:SimSun;font-size:18px;color:#ff0000;">PreferenceActivity继承了ListActivity,主要用于做设置界面的时候用。</span><span style="font-family:SimSun;"><span style="font-size:18px;color:#ff0000…...

    2024/5/2 6:38:15
  6. NSIS 基于QT的自定义安装界面

    前段时间在做安装程序时,需要自定义安装界面代替传统的打包工具制作的安装界面。毕竟打包工具制作的界面定制麻烦也比较丑。我们可以使用第三方界面库写安装程序,再在NSIS脚本中调用即可。采用NSIS + QT 制作安装程序实际上就是使用QT制作安装程序,而NSIS仅仅将制作的安装程…...

    2024/5/2 0:01:26
  7. 字符串截取

    字符串截取 1、js中字符串的截取 (1)substring() ​ substring(start,end) ​ start:开始的位置,必填项,从0开始,且包含在所截取的字符串中 ​ end:结束位置,非必填,不包含截取的字符串中 ​ 注意事项: 1. substring() 包含start处的字符,但不包含end中的字符 2. …...

    2024/5/1 21:18:20
  8. Linux 串口编程 一些背景

    在大部分讲解 Linux 编程书籍的时候会发现没有单独的串口编程章节,实际上串口编程已经被概括在了“终端”或者“终端IO”章节里面。在上一篇博客中对经常出现的几个容易混淆的概念进行简单描述:tty,串口,控制台与驱动程序。后面会在实际使用过程中对几种设备的原理与使用进…...

    2024/4/21 8:30:46
  9. C#/VC++打包成个绿色版本,不要安装程序直接运行EXE

    描述:这种一般是演示的exe,直接让客户点击exe就可以运行,但是有时候exe需要附带一些dll、配置文件等 方法: 直接到bin/debug(或bin/release)目录下面,将exe及附带的dll、xml、ini等所有文件都复制或压缩到RAR中即可 详细步骤: 首先,把你要打包的文件全选定,不是压缩文件…...

    2024/4/21 8:30:45
  10. Android Settings开发之修改(转)

    原文地址:http://blog.csdn.net/wangjinyu501/article/details/22077803 下面是Seeings应用的截图: 可以看出这是很典型的使用了Fragment后的界面,设置里面有WIFI、蓝牙、显示、存储、应用等众多功能。左边的每一项,对应着右边的一个设置界面,Fragment有四个子类:Dialog…...

    2024/4/21 8:30:44
  11. js字符串函数(split、join、indexOf、substring)

    参考链接:http://www.jbxue.com/article/9225.html1,函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 str="jpg|bmp|gif|ico|png"; arr= str .split("\\|");//转义符 //arr是一个包含字符值”jpg”、”bmp”、”gif”、”ico”和”…...

    2024/4/21 8:30:44
  12. flash as3.0粒子效果实例教程

    1、新建Flash文档,设置:宽、高为 400 400 ,保存。2、用椭圆工具在舞台上画一个 20 20 大小的圆。 (你能选择任意的颜色)3、右键单击圆形,把它转换成影片剪辑,注册点居中。4、在ActionScript导出的复选框中打勾 ,做类链接,类名为" Particle " 。图1:[img]/…...

    2024/4/21 8:30:42
  13. 使用RPM打包QT程序

    本文章只是一个RPM打包的一个小例子,仅适合初学者参考!先说一下使用RPM打包的步骤:一、首先将写好的内容使用tar压缩成.tar.gz格式二、创建所需的目录并配置rpm打包目录使用rpm打包需要独立目录。首先需要一个rpmbuild目录,在rpmbuild目录下创建BUILD,BUILDROOT,RPMS,SO…...

    2024/4/21 8:30:41
  14. Android——PreferenceActivity简单使用

    在上一篇BlogSharedPreferences中已经介绍了SharedPreference的使用,发现保存和修改数据比较简单,但当我们将preferences和Activity结合使用时就可能有点麻烦,这时候要用到 PreferenceActivity和PreferenceFragment这里我们介绍使用PrefernceFragment(PreferenceActivity类…...

    2024/5/1 5:10:10
  15. windows下打包QT5.1程序

    首先说下我的环境: QT5.1+QT Creator2.8.1基本上是最新的平台。 我最近写了一个SMTP发送邮件的小程序,过段时间有空再把它贴出来。因为这个程序要放到别人机器上运行,所以我就想到了打包QT程序,网上搜到了大牛的博客,地址为Windows如何打包Qt程序。我就是按照他的教程做的…...

    2024/4/20 18:29:25
  16. linux 下的串口驱动和《Linux Device Drivers》学习感受

    最近一个星期的时间都毁在为在linux上写一个串口芯片的驱动程序了。先花了4天5天时间把LDD(Linux Device Drivers)看完了,然后花了2天看了一下linux自带的串口驱动程序到底是怎么写的,最后很幸运的用了2天把已有的串口驱动程序改写过来并且一把调通,真是心中暗存庆幸。总结…...

    2024/4/20 18:29:24
  17. js截取字符串区分汉字字母代码

    js截取字符串并且区分汉字字母,一个汉字辨别为两个字节。function substr(str, len) {if (!str || !len) {return ;}// 预期计数:中文2字节,英文1字节var a = 0;// 循环计数var i = 0;// 临时字串var temp = ;for (i = 0; i < str.length; i++) {if (str.charCodeAt(i) &…...

    2024/4/20 18:29:22
  18. Flash AS3实例教程:快速制作烟雾动画_Flash_|>

    本例利用flash快速制作烟雾动画,主要利用AS3的类来实现。本文最后提供源码压缩包下载,源文件仅供学习交流之用。   我们先看看效果演示: 效果演示   首先我们在Photoshop中制作一个烟雾的照片,这里主要使用Photoshop的画笔来实现。 图1 图2 图3   之后我们导进…...

    2024/4/20 18:29:21
  19. 大叔程序员的第二天 @Fragment学习

    Fragment生命周期类似于Activity。 用于分屏显示功能。 使用可继承Fragment类或者其三个子类:DialogFragment,ListFragment,PreferenceFragment。 文库的学习资料http://wenku.baidu.com/view/13fa98c008a1284ac8504331.html介绍的比较全。 举个2个创建Fragment的例子,下面…...

    2024/4/28 16:11:23
  20. cordova安装和打包

    最近,实验室在做一个适配于手机的web项目(可以说是一个混合应用开发),最后需要打包成apk程序,作为一名对移动开发的研究者,这个打包的任务就自然落在了我的头上,下面讲解一下安装cordova和用cordova打包apk的过程以及我在打包的过程中遇到的一些问题。 一、cordova的下载…...

    2024/4/21 8:30:38

最新文章

  1. Spring Cloud Kubernetes 本地开发环境调试

    一、Spring Cloud Kubernetes 本地开发环境调试 上面文章使用 Spring Cloud Kubernetes 在 k8s 环境中实现了服务注册发现、服务动态配置&#xff0c;但是需要放在 k8s 环境中才能正常使用&#xff0c;在本地开发环境中可能没有 k8s 环境&#xff0c;如何本地开发调试呢&#…...

    2024/5/2 6:39:12
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. promise.all方式使用

    romise.all( ).then( ) 处理多个异步任务&#xff0c;且所有的异步任务都得到结果时的情况。 比如&#xff1a;用户点击按钮&#xff0c;会弹出一个弹出对话框&#xff0c;对话框中有两部分数据呈现&#xff0c;这两部分数据分别是不同的后端接口获取的数据。 弹框弹出后的初…...

    2024/5/1 13:17:42
  4. Android Framework学习笔记(2)----系统启动

    Android系统的启动流程 启动过程中&#xff0c;用户可控部分是framework的init流程。init是系统中的第一个进程&#xff0c;其它进程都是它的子进程。 启动逻辑源码参照&#xff1a;system/core/init/main.cpp 关键调用顺序&#xff1a;main->FirstStageMain->SetupSel…...

    2024/5/2 2:35:59
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/1 17:30:59
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/30 18:14:14
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/29 2:29:43
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/30 18:21:48
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/27 17:58:04
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/27 14:22:49
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/28 1:28:33
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/30 9:43:09
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/27 17:59:30
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/28 1:34:08
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/26 19:03:37
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/29 20:46:55
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/30 22:21:04
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/1 4:32:01
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/27 23:24:42
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/28 5:48:52
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/30 9:42:22
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/30 9:43:22
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/30 9:42:49
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57