• [分享交流] Android - SharePreference 参考
    import android.app.Activity;import android.content.SharedPreferences;import android.os.Looper;import android.widget.Toast;public class MySharePref {    public SharedPreferences mShPref = null;    public MySharePref(String fileName)    {        if(null == mShPref)            mShPref = MyGetActivity.getActivity().getSharedPreferences(fileName, Activity.MODE_PRIVATE);  //get        String check = mShPref.getString("name", "123"); // query        if(check.equals("123")) { //not exists            SharedPreferences.Editor editor = mShPref.edit();            editor.putString("name", "jacky");            editor.putString("age", "26");            editor.putString("name", "mary green nice nice nice !!!");            editor.putLong("length", 185);            editor.putLong("extra", 220);            editor.remove("extra");            editor.putLong("length", 182);            editor.commit(); //save        }        if(null != mShPref) {            String result = mShPref.getString("name", "not exists!!!");            Looper.prepare();            Toast.makeText(MyGetActivity.getActivity().getApplicationContext(), result, 2500).show();            Looper.loop();        }    }}result : mary green nice nice nice !!!
  • [问题求助] 求一个应用端Android的demo
    求一个应用端Android的demo
  • [技术干货] DevOps on DevCloud|如何构建Kotlin开发的Android Apps
    https://bbs.huaweicloud.com/blogs/512d6835917611e9b759fa163e330718
  • [已解决问题归档] [云上]请问我能够在android的sdk吗?
    您好!  我们有个业务需要在嵌入式的设备上拨打电话,请问有支持android的网络电话SDK吗?
  • [上云精品] 几维盾牌移动应用加固系统全新上线,Android免费在线使用
    几维盾牌移动应用加固系统是一项面向互联网企业和个人开发者的加密服务,现支持安卓应用加密,用户只需提供APK包即可快速集成防静态工具分析、Dex文件保护、So文件加壳、内存保护、反调试、防二次打包等多项安全功能。 支持对金融、手游、电商、社交等多个行业的应用做加固保护,避免核心代码被反编译, 请求协议被伪造,APK包被植入恶意代码等诸多安全问题。安卓应用加密提供DEX初级加密、防二次打包、数据监测等功能,可避免破解与盗版上传APP、一键加密、下载APP,操作简易,极速完成在线免费使用  http://cloud.kiwisec.com
  • Android编译报错Gradle 4.10.1
    本地升级AS到3.3distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip到distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zipclasspath 'com.android.tools.build:gradle:3.2.1'到classpath 'com.android.tools.build:gradle:3.3.0'+ chmod +x gradlew+ gradlew assembleDebug --stacktrace[2019-01-15 14:03:33.091] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8[2019-01-15 14:03:34.014] [2019-01-15 14:03:34.014] Welcome to Gradle 4.10.1![2019-01-15 14:03:34.014] [2019-01-15 14:03:34.014] Here are the highlights of this release:[2019-01-15 14:03:34.014]  - Incremental Java compilation by default[2019-01-15 14:03:34.014]  - Periodic Gradle caches cleanup[2019-01-15 14:03:34.014]  - Gradle Kotlin DSL 1.0-RC6[2019-01-15 14:03:34.014]  - Nested included builds[2019-01-15 14:03:34.014]  - SNAPSHOT plugin versions in the `plugins {}` block[2019-01-15 14:03:34.014] [2019-01-15 14:03:34.014] For more details see https://docs.gradle.org/4.10.1/release-notes.html[2019-01-15 14:03:34.014] [2019-01-15 14:03:34.014] To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/4.10.1/userguide/gradle_daemon.html.[2019-01-15 14:03:35.374] Daemon will be stopped at the end of the build stopping after processing[2019-01-15 14:03:36.733] Parallel execution with configuration on demand is an incubating feature.[2019-01-15 14:03:38.614] [2019-01-15 14:03:38.615] FAILURE: Build failed with an exception.[2019-01-15 14:03:38.615] [2019-01-15 14:03:38.615] * Where:[2019-01-15 14:03:38.615] Build file '/devcloud/slave1/workspace/job_586711a8-1cc3-4d48-8f1b-803012c8d5b7_1547532168141/blurDialogFragment/build.gradle' line: 1[2019-01-15 14:03:38.615] [2019-01-15 14:03:38.615] * What went wrong:[2019-01-15 14:03:38.615] A problem occurred evaluating project ':blurDialogFragment'.[2019-01-15 14:03:38.615] java.lang.ExceptionInInitializerError (no error message)[2019-01-15 14:03:38.615] [2019-01-15 14:03:38.615] * Try:[2019-01-15 14:03:38.615] Run with --info or --debug option to get more log output. Run with --scan to get full insights.[2019-01-15 14:03:38.615] [2019-01-15 14:03:38.615] * Exception is:[2019-01-15 14:03:38.615] org.gradle.api.GradleScriptException: A problem occurred evaluating project ':blurDialogFragment'.[2019-01-15 14:03:38.615] at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:92)[2019-01-15 14:03:38.615] at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl$2.run(DefaultScriptPluginFactory.java:206)……………………[2019-01-15 14:03:38.615] at org.gradle.configuration.ProjectScriptTarget.addConfiguration(ProjectScriptTarget.java:77)[2019-01-15 14:03:38.616] at org.gradle.api.internal.project.ProjectScript.apply(ProjectScript.java:34)[2019-01-15 14:03:38.616] at org.gradle.api.Script$apply$0.callCurrent(Unknown Source)[2019-01-15 14:03:38.616] at build_ggp63l48vz8kqc02260o6dps.run(/devcloud/slave1/workspace/job_586711a8-1cc3-4d48-8f1b-803012c8d5b7_1547532168141/blurDialogFragment/build.gradle:1)[2019-01-15 14:03:38.616] at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:90)[2019-01-15 14:03:38.616] ... 115 more[2019-01-15 14:03:38.616] Caused by: java.lang.IllegalStateException: gson.fromJson(InputStrea...SettingsData::class.java) must not be null[2019-01-15 14:03:38.616] at com.android.tools.analytics.AnalyticsSettings.loadSettingsData(AnalyticsSettings.kt:140)[2019-01-15 14:03:38.616] at com.android.tools.analytics.AnalyticsSettings.initialize(AnalyticsSettings.kt:211)[2019-01-15 14:03:38.616] at com.android.tools.analytics.AnalyticsSettings.initialize$default(AnalyticsSettings.kt:205)[2019-01-15 14:03:38.616] at com.android.build.gradle.internal.crash.PluginCrashReporter.getCrashReporter(PluginCrashReporter.kt:52)[2019-01-15 14:03:38.616] at com.android.build.gradle.internal.crash.PluginCrashReporter.getCrashReporter$default(PluginCrashReporter.kt:51)[2019-01-15 14:03:38.616] at com.android.build.gradle.internal.crash.PluginCrashReporter.clinit(PluginCrashReporter.kt:35)[2019-01-15 14:03:38.616] ... 142 more[2019-01-15 14:03:38.616] [2019-01-15 14:03:38.616] [2019-01-15 14:03:38.616] * Get more help at https://help.gradle.org[2019-01-15 14:03:38.616] [2019-01-15 14:03:38.616] BUILD FAILED in 5s[2019-01-15 14:03:38.885] ERROR: script returned exit code 1
  • [交流吐槽] android demo运行失败
    我在安这个文档尝试设备接入 https://support.huaweicloud.com/devg-IoT/iot_02_1032.html应用对接这里有点儿困惑? HTTPS 协议,不提供域名的话,如何校验证书合法性?
  • Android带有粘性头部的ScrollView
    前言,一天在点外卖的时候,注意到饿了么列表页的滑动效果不错,但是觉得其中的手势滑动还是挺复杂的,正好又碰到了在熟悉Touch事件的理解当中,所以就抽空对着饿了么的列表页面尝试写写这个效果1.先贴一个实现的效果图逻辑是当外部的ScrollView没有滑到底部的时候,往上滑动的时候,是滑动外部的ScrollView,当外部的ScrollView到达底部的时候,我们再网上滑,就是滑动内部的列表了,另外在左右滑动的时候,当左右滑动的距离大于minPageSlop的话,那么就执行左右滑动。如下是仿饿了么的列表页的效果图:2.引入在项目根目录的build.gradle文件下增加jitpack的repo地址allprojects { repositories {    jcenter()    maven { url "https://jitpack.io" } }}在需要引入的module中引入librarydependencies {    implementation 'com.github.WelliJohn:StickScrollView:0.0.3'}3.界面的布局说明    <wellijohn.org.stickscrollview.ScrollViewWithStickHeader        android:id="@+id/stick_scroll_view"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_weight="1">        <LinearLayout            android:id="@+id/ll"            android:layout_width="match_parent"            android:layout_height="match_parent"            android:descendantFocusability="blocksDescendants"            android:focusableInTouchMode="true"            android:orientation="vertical">            //这里是header部分,可以随便自定义            </LinearLayout>            <LinearLayout                android:id="@+id/ll_stick_list"                android:layout_width="match_parent"                android:layout_height="wrap_content"                android:orientation="vertical">                <android.support.design.widget.TabLayout                    android:id="@+id/order_manager_tabs"                    android:layout_width="match_parent"                    android:layout_height="50dp"                    android:background="#FFFFFF"                    tools:tabGravity="fill"                    tools:tabMode="fixed" />                <android.support.v4.view.ViewPager                    android:id="@+id/vp"                    android:layout_width="match_parent"                    android:layout_height="wrap_content" />            </LinearLayout>        </LinearLayout>    </wellijohn.org.stickscrollview.ScrollViewWithStickHeader>比如我们看到的仿饿了么的列表页界面,我们就需要在ViewPager设置Fragment,fragment中是左右两个列表,看下fragment的xml设置:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/ll"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="horizontal">    <wellijohn.org.stickscrollview.ChildRecyclerView        android:id="@+id/child_recyclerview"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:layout_weight="1"        android:background="#EEEEEE" />    <wellijohn.org.stickscrollview.ChildRecyclerView        android:id="@+id/child_recyclerview_right"        android:layout_width="0dp"        android:layout_height="wrap_content"        android:background="#FFFFFF"        android:layout_weight="3" /></LinearLayout>4.注意事项ScrollViewWithStickHeader内部目前支持放置ViewPager,ScrollView,RecyclerView,WebViewScrollView,RecyclerView,WebView需要对应使用ChildScrollView,ChildRecyclerView,ChildWebView我们在使用的时候,需要调用mStickScrollView.setContentView(mContentView);mLLStickList就是我们需要StickHeader+列表的部分,如果你没有StickHeader的话,那么直接设置列表进来也可以,总之,你想滑动到哪个位置接下来滑动就是单纯下面的部分滑动,那你就把下面的View整体设置为mContentView。刚刚那个的ContentView是id为ll_stick_list的View。另外在这里ScrollViewWithStickHeader增加autoscroll属性,默认是关闭的,如果autoscroll:true的话,在我们手指放开的时候,contentView会判断是否自动滑动到顶部还是隐藏不见。5.0.0.3版本修复当有底部有操作栏的时候,界面的滚动出现错乱的问题。当我们底部有view需要固定的时候,我们需要通过mStickScrollView.setBottomView(mViewBottom);就可以了,如下所示:6.任何控件的使用我们最好都知道它的实现方式,所以在这里简单介绍下这款控件的设计思路(ChildScrollView,ChildRecyclerView,ChildWebView下面的都称为子ScrollView)?6.1.我们什么时候应该让外部的ScrollView执行滑动事件,什么时候让子ScrollView执行滑动。在Android中我们有一个方法getParent().requestDisallowInterceptTouchEvent(true);就是让view获取到对应的事件。6.2.既然我们知道了怎么让view的touch事件,接下来我们就要明白在什么情况下我们应该让父view执行滚动事件,什么时候让子view执行滚动事件。如下,我列了表格:父ScrollVIew子ScrollView手势滑动方向滑动事件交由哪个view控制不在底部顶部向上父ScrollView不在底部顶部向下父ScrollView底部不在顶部向上子ScrollView底部不在顶部向下子ScrollView底部顶部向下父ScrollView底部顶部向上子ScrollView在这里当父ScrollView不在底部的时候,不会出现子ScrollView不在顶部的情况,所以在这里就不分析了。6.3.分析了,在什么情况我们应该让子ScrollVIew还是父ScrollView捕获滑动事件了,我们就可以在我们的子ScrollView中编写对应的代码处理了?如下面是一段ChildScrollView的onTouchEvent方法的重写,其他的ChildRecyclerView和ChildWebView处理也是一样的:@Overridepublic boolean onTouchEvent(MotionEvent event) {    if (mScrollViewWithStickHeader == null) return super.onTouchEvent(event);    int action = event.getAction();    if (action == MotionEvent.ACTION_DOWN) {        mLastX = event.getX();        mLastY = event.getY();        //首先判断外层ScrollView是否滑动到底部        if (mScrollViewWithStickHeader.isBottom()) {            getParent().requestDisallowInterceptTouchEvent(true);            return super.onTouchEvent(event);        } else {            //拦截事件 本身不处理            getParent().requestDisallowInterceptTouchEvent(false);            return false;        }    }    if (action == MotionEvent.ACTION_MOVE) {        float nowY = event.getY();        if (!mScrollViewWithStickHeader.isBottom() && !isScrolledToTop && nowY - mLastY > 0) {            if (Math.abs(event.getX() - mLastX) < minPageSlop) {                getParent().requestDisallowInterceptTouchEvent(true);                return super.onTouchEvent(event);            } else {                getParent().requestDisallowInterceptTouchEvent(true);                return false;            }        } else if (mScrollViewWithStickHeader.isBottom() && !isScrolledToBottom && nowY - mLastY < 0) {            if (Math.abs(event.getX() - mLastX) < minPageSlop) {                getParent().requestDisallowInterceptTouchEvent(true);                return super.onTouchEvent(event);            } else {                getParent().requestDisallowInterceptTouchEvent(true);                return false;            }        } else if (mScrollViewWithStickHeader.isBottom() && !isScrolledToTop && nowY - mLastY > 0) {            if (Math.abs(event.getX() - mLastX) < minPageSlop) {                getParent().requestDisallowInterceptTouchEvent(true);                return super.onTouchEvent(event);            } else {                getParent().requestDisallowInterceptTouchEvent(true);                return false;            }        } else {            getParent().requestDisallowInterceptTouchEvent(false);        }    }    if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_CANCEL) {        getParent().requestDisallowInterceptTouchEvent(false);    }    return super.onTouchEvent(event);}这样的话,我们就能实现固定头部的ScrollView了。©本文转自(WelliJohn)博客51CTO博客,如需转载,请自行联系原作者。原文链接(http://blog.51cto.com/7091572/2066690)
  • [新特性] 视频点播上线新功能(提供Android播放器SDK开发Demo)啦
    视频点播发布日志管理服务【新功能】:提供Android播放器SDK各功能点API调用的开发Demo详细的操作与描述:华为云Android 播放器支持DASH,HLS,MP4视频格式播放,demo中实现了播放,暂停,进度条,手势识别实现调节亮度音量快进快退,高级功能有分辨率切换和倍速播放,支持全屏。其他功能用户可以自行开发。
  • [技术分享] Android代码库manifest.xml文件介绍
    Android源码库数据量庞大,因此Google为了方便管理代码库以及后期的开发,特此引入了repo来封装git,大大的简化了代码库的下载、更新和推送。而庞大的代码库则被封装在.repo/manifests/default.xml文件中,在下载或推送代码时,git会根据xml文件对应的库和路径进行代码的自动索引。现就xml文件简单介绍如下:<?xml version="1.0" encoding="UTF-8"?> <manifest>   <remote fetch="gerrit" name="sim" review="gerrit:8080"/>   <default remote="caf" revision="QRD8926_KK"/>   <project name="device/common"/>   <project groups="pdk" name="device/generic/armv7-a-neon"/>   <project groups="pdk" name="device/generic/common"/>   <project name="device/qcom/common">     <copyfile dest="build.sh" src="build.sh"/>     <copyfile dest="vendor/qcom/build/tasks/generate_extra_images.mk" src="generate_extra_images.mk"/>   </project>   <project groups="pdk" name="platform/external/chromium-trace" path="external/chromium-trace"/> </manifest>1) manifest元素最顶层的xml元素,<manifest>与</manifest>对应,成对出现。2) remote元素功能:设置远程git服务器的属性属性:  * name:远程git服务器的名字,直接用于git fetch,git remote等操作。  * alias:远程git服务器的别名,如果设置了,则会覆盖name的设定,在一个manifest文件中,name不能重名,但alias可以重名。  * fetch:所有projects的git url前缀。  * review:指定gerrit服务器名,用于repo upload操作,若没指定,repo upload无效果。例如:<remote fetch="ssh://git.example.com"   name="test"   review="gerrit.example.com"/>3) default元素功能:设定所有project的默认属性值,如果在project元素中没有指定一个属性,则使用default元素的属性值。属性:  * remote:之前定义的某一的remote元素中name属性值,用于指定使用哪一个远程git服务器。  * revesion:git分支名字,例如master或者 refs/heads/master  * sync_j:在repo sync中默认并行的数目  * sync_c:设置为true,则只同步指定的分支(revision属性指定),而不是所有ref内容。  * sync_s:设置为true,则会同步git的子项目。4) manifest-server元素只能有一个该元素,他的url属性用于指定manifest服务的url,通常是一个xml rpc服务。5) project元素功能:指定一个需要clone的git仓库在服务器上对应的路径和clone到本地后所属的路径。属性:    * name: 唯一的名字标识project,同时也用于生成git仓库的URL。格式如下: ${remote_fetch}/${project_name}.git    * path: 可选的路径。指定git clone出来的代码存放在本地的子目录。如果没有指定,则以name作为子目录名。    * remote: 指定之前在某个remote元素中的name。    * revision: 指定需要获取的git提交点(master, refs/heads/master, tag或者SHA-1值)。    * groups: 列出project所属的组,以空格或者逗号分隔多个组名。所有的project都自动属于"all"组。每一个project自动属于name:'name' 和path:'path'组。例如:<project name="**eys" path="barrel-of"/>它自动属于default, name:**eys, 和path:barrel-of组。如果一个project属于notdefault组,则repo sync时不会下载。    * sync_c: 如果设置为true,则只同步指定的分支(revision 属性指定),而不是所有的ref内容。    * sync_s: 如果设置为true,则会同步git的子项目。    * upstream: 在哪个git分支可以找到一个SHA1。用于同步revision锁定的manifest(-c 模式)。该模式可以避免同步整个ref空间。    * annotation: 可以有多个annotation,格式为name-value pair。在repo forall 命令中这些值会导入到环境变量中。    * remove-project: 从内部的manifest表中删除指定的project。经常用于本地的manifest文件,用户可以替换一个project的定义。6)  include元素通过name属性可以引入另外一个manifest文件(路径相对于manifest repository's root)。
  • [云早报] 谷歌发布Android9系统正式版 AI加持~(北京时间)8月8日,星期三
    云早报,(北京时间)8月8日,星期三【云头条】谷歌发布Android9系统正式版 AI加持8月7日消息,谷歌最新的Android 9系统正式版今天发布,新版本以机器学习为核心,能根据你的喜好自动调整你的手机,让它更适合你。从帮助用户充分利用电池寿命,到任何时刻都能展现 app 中最佳部分。此外,新版本中加入了全新的全面屏操作手势,有些类似iPhone X 上的操作,还加入了 Android Dashboard,可以让用户了解自己使用设备的习惯,类似于苹果 iOS 12 的屏幕使用时间功能。【华为云新闻】如何预防勒索病毒?华为云教你几招近日,多个芯片制造企业遭受到了罕见的病毒攻击事件。而此次发起攻击的正是臭名昭著的勒索病毒Wannacry。该病毒首次大规模爆发于2017年5月,至少150个国家、30万名用户中招,造成损失达80亿美元,全球政府、教育、医院、能源、通信、制造业等关键基础设施行业都遭到了空前巨大的损失...(查看原文)【互联网新闻】1.今日头条据悉估值可能达到750亿美元据华尔街日报报道,北京字节跳动有限公司(今日头条母公司)启动了一轮股权融资,估值可能达750亿美元。据知情人士透露,该公司的目标是正寻求私下融资30亿美元,这一数额可能会发生变化,而且也无法保证该公司将实现其目标估值。其中一名知情人士说,一些字节跳动公司的股票最近在私人交易中转手,估值约为62亿美元。在2017年末的一轮融资中,该公司的估值超过200亿美元。网友评论:段友们,回家了。皮皮出征,浴火重生~2.Facebook因泄密门失去重要客户,意大利最大银行与其断交据新浪科技报道,意大利最大银行裕信银行的CEO Jean Pierre Muster宣布,因认为Facebook“并未以道德的方式行事“,裕信银行将不在与Facebook有任何业务关系,其他大型公司也曾威胁要采取行动。Jean Pierre Mustier表示,意大利金融集团将不会与Facebook建立任何业务关系,因为银行坚称其行为不当。网友评论:小扎刚松了口气就出事了...3.法院裁定查封冻结贾跃亭等2.06亿财产记者8月7日从中国裁判文书网获悉,浙商银行北京分行近日向法院申请冻结贾跃亭等四被申请人财产。北京市第四中级人民法院裁定:查封、扣押、冻结乐视体育文化产业发展(北京)有限公司、贾跃亭、乐视控股(北京)有限公司、厦门章鱼互动网络科技有限公司的财产,限额2.06亿元。上述民事裁定书注明的时间为2018年7月27日,申请人为浙商银行北京分行。其中,冻结银行存款的期限为一年,查封动产的期限为两年,查封不动产、冻结其他财产权的期限为三年。网友评论:好久没听到贾布斯的消息了...4.沙特主权财富基金增持特斯拉,马斯克称或将其私有化当地时间周二,特斯拉首席执行官马斯克在推文中称,“我考虑将特斯拉以每股420美元的价格私有化。资金来源是有保障的”。几分钟后,一份报告称沙特的主权财富基金建仓,持有特斯拉3%至5%的股份,根据特斯拉目前股价,该头寸的价值在17亿至29亿美元之间。网友评论:这是一条大新闻!5.5G提速 重庆联通年内拟开通50个基站近日,重庆联通公司介绍,该公司计划在今年内将开通50个5G基站,开展规模组网试验,后续还将继续加大5G网络基础设施的投入。预计2020年前,在巴南区建设完成网络第二枢纽大楼,进一步扩大网络出口带宽,优化网络结构,积极推动5G网络商用。重庆作为中国联通全国首批5G网络试点城市,中国联通重庆市分公司在工信部、联通集团的指导下,联合产业链相关单位,在重庆市两江新区数字产业园开展了5G组网试验。6.长江存储推出全新3D NAND架构8月8日,国内2016年成立的长江存储推出全新3D NAND架构:XtackingTM。作为NAND行业的新晋者,长江存储科技有限责任公司(简称:长江存储)今天公开发布其突破性技术——XtackingTM。该技术将为3D NAND闪存带来前所未有的I/O高性能,更高的存储密度,以及更短的产品上市周期。据官方介绍,采用XtackingTM,可在一片晶圆上独立加工负责数据I/O及记忆单元操作的外围电路。这样的加工方式有利于选择合适的先进逻辑工艺,以让NAND获取更高的I/O接口速度及更多的操作功能。存储单元同样也将在另一片晶圆上被独立加工。当两片晶圆各自完工后,创新的XtackingTM技术只需一个处理步骤就可通过数百万根金属VIA(Vertical Interconnect Accesses,垂直互联通道)将二者键合接通电路,而且只增加了有限的成本。网友评论:三星开始慌了~7.社交电商竞争加速,支付宝上线拼团业务继今年3月上线淘宝特价版后,淘宝联合支付宝推出的“拼团”业务近期在支付宝主页已悄然上线。进入页面后可以看到,商品类目涵盖从日用品、食品到服饰等近12个品类,拼团价大多介于5元到30元之间。支付宝方面告诉记者,准确来说这其实是“限时拼团”,它会分时段给用户推荐不同的拼团商品。支付宝上的这些商品全都来自不同的淘宝店家,涵盖了日用、食品、服饰等十多个品类。但拼团价会比淘宝价格再低一些,很多甚至都是再打5折的降价幅度。尝试点击拼团后可以发现,除了可以自主发起拼团、邀请好友外,还能由系统匹配,加入到已经开始的拼单中。网友评论:支付宝也开始学拼多了~8.李彦宏喊话谷歌回归中国:有信心再赢一次 针对《人民日报》在官方推特表示欢迎谷歌回到中国大陆一事,百度CEO李彦宏在微信“朋友圈”发文表示:“如果谷歌决定回到中国,我们非常有信心再PK一次,再赢一次。”近期谷歌将回中国市场的传言频出,如外媒报道谷歌将推符合中国法律规定的搜索引擎、可供中国使用的新闻聚合App等。而《人民日报》在官方推文中强调,谷歌回归前提是,遵守中国政府相关法律政策。网友评论:好像赢过谷歌似的。9.发售一小时涨幅超30倍,麦当劳纪念币遭疯抢 8月6日,麦当劳MacCoin币正式上线。一枚MacCoin在闲鱼上的价格已炒高至800元,而且价格仍在持续上涨之中。据了解,8月3日,麦当劳中国宣布,为与全球同步庆祝其经典产品巨无霸的50周岁生日,将推出一套5款巨无霸收藏币MacCoin,供粉丝分享与收藏,同时还可在全球门店兑换巨无霸产品。网友评论:炒再高也只值一个巨无霸。10.称《这就是街舞》遭盗播,“优酷”诉“电视猫视频”索赔500万根据海淀法院网消息,因认为“电视猫视频”未经授权擅自播出《这就是街舞》并屏蔽广告构成侵犯著作权及不正当竞争,优酷信息技术(北京)有限公司将“电视猫视频”运营商上海千衫网络技术发展有限公司诉至法院,要求停止侵权及不正当竞争行为,刊登道歉声明,消除影响,并赔偿其经济损失及合理支出500万元。日前,海淀法院受理了此案。网友评论:盗播还屏蔽广告,生气!【本周新闻】谷歌与腾讯浪潮等公司洽谈内地云业务~(北京时间)8月6日,星期一腾讯云硬盘Bug致文件损坏:用户索赔千万~(北京时间)8月7日,星期二【更多内容,欢迎访问】http://forum.huaweicloud.com/forum.php?mod=forumdisplay&fid=569&filter=typeid&typeid=266(内容来源于互联网,如侵犯您的合法权益或有其他任何疑问,请联系:huaweicloud.bbs@huawei.com沟通处理。谢谢!)
  • [技术干货] 一些开源的Android项目,大家参考一下(回帖可见下载地址)
    [hide]https://pan.baidu.com/s/1t7LTAC_U7FbBQ-WHX2HENQ密码:      76cn[/hide][hide]https://pan.baidu.com/s/1jliuy6bVHJ6A7Rpahqm81w密码:   a4vy[/hide][hide]https://pan.baidu.com/s/1--rQor2hac7a5s01UZCtiA密码:   6x38[/hide][hide]https://pan.baidu.com/s/1YXT2GBAsIMvr1b0NSeCsJg密码:   suvs[/hide][hide]https://pan.baidu.com/s/1EXZyeckDs0eMCQq4Kxta_A密码:     vmrz[/hide][hide]https://pan.baidu.com/s/1g9Ul1tLV2DgGzQjR9rl3WQ密码:    ty1e[/hide]
  • [云早报] 5G全球统一标准出炉 进入产业化试用阶段(北京时间)6月15日,星期五
    本帖最后由 Haru_lu 于 2018-6-19 09:27 编辑17477 管理与部署云早报,(北京时间)6月15日,星期五 【云头条】 5G全球统一标准出炉 进入产业化试用阶段 6月14日消息,3GPP全会(TSG#80)批准了第五代移动通信技术标准(5G NR)独立组网功能冻结。加之去年12月完成的非独立组网NR标准,5G 已经完成第一阶段全功能标准化工作,进入了产业全面冲刺新阶段。经过34个月艰苦而高效的工作,凝聚各方协作与智慧的5G第一个版本标准终于出台。 【华为云新闻】 华为云@CEBIT2018 | 奏响数字世界交响曲! 华为云作为企业用户的业务底座,通过对云计算,大数据,物联网以及人工智能AI持续的研发投入,为企业用户谱写技术奏鸣曲,同时携手伙伴公有云(中国电信天翼云,Open Telekom Cloud,Orange Flexible Engine等)聚焦智能制造、智慧零售、金融、企业关键业务等行业,希望成为“欧洲企业拓展中国市场&中国企业走向欧洲的首选云服务商”。(查看全文) 【互联网新闻】 1.周鸿祎:要定期清理小白兔员工以避免“死海效应” 周鸿祎微博发文称,公司部门领导和人力资源部门要定期清理小白兔员工,否则就会发生死海效应:公司发展到一定阶段,能力强的员工容易离职,因为他们对公司内愚蠢的行为的容忍度不高,他们也容易找到好工作,能力差的员工倾向于留着不走,他们也不太好找工作,年头久了,他们就变中高层了。这种现象叫“死海效应”;好员工像死海的水一样蒸发掉,然后死海盐度就变得很高,正常生物不容易存活。 网友评论:你的意思留着的都是能力不强的,走的都是强的喽~ 2.特朗普批准对约500亿美元中国产品加征关税 特朗普批准对约500亿美元中国产品加征关税;将被加征关税的产品和初步清单大体一致。昨晚外交部例行记者会上,外交部发言人耿爽曾表示本月初,美国商务部长罗斯率团来华,与中方进行了磋商,取得了积极的、具体的进展。在磋商后中方发表了声明。声明指出,如果美方出台包括加征关税在内的贸易制裁措施,双方谈判达成的所有经贸成果将不会生效。 网友评论:美国代购的春天就要来了... 3.微软对Office界面进行重新设计,易用性大幅提升 微软今日对Office应用的界面进行了重新设计,引入了Windows 10的“流畅设计体系”(Fluent Design),让更新后的Office更加易用。更新后的Office界面,包括Word、Excel、PowerPoint和Outlook等应用均采用了最新设计的“Ribbon”界面,显得更轻巧,更易用。新的“Ribbon”界面包括新的动画、易于访问的图标,以及微妙的颜色变化,让Office看起来更加现代化。这些变化不仅会应用到Office桌面版本,也将应用到网络版(Office.com)上。 网友评论:中国各大学校、政府机关、事业单位 表示:office你尽管升级大变样,我依旧选择2003/2007,我升级算你赢! 4.代号“斯嘉丽” 微软2020年将推出新一代Xbox游戏机 近日,来自外媒 Thurrott 的消息称,微软新一代 Xbox 系列家用游戏机已经在开发中了,预计最早在 2020 年之前就能看到曙光,并且不出意外将带来一系列重大惊喜。爆料者表示,微软的新一代 Xbox 游戏机内部代号似乎为“斯嘉丽(Scarlett)”,并且与之前的机型相比,该新机型并不仅仅代表“某一款”新的游戏机,虽然仍会归类于 Xbox 品牌,但实际上将其称之为另一个全新的产品“系列”更合适。按照爆料者的说法,微软目前正致力于为游戏硬件积极提供各种服务和软件,包括微软游戏负责人在 E3 上确认研发中的串流,以及更多的第一方游戏等。 网友评论:一看到斯嘉丽就想到了斯嘉丽洗澡水... 5.高通遭美律师事务所集体诉讼,暗地破坏博通交易 美律师事务所Bronstein, Gewirtz & Grossman, LLC今日宣布,已代表高通股票投资者对高通公司及其特定高管提起诉讼,称高通违反了美国证券法,要求对投资者进行赔偿。起诉书称,高通在上述期间内做出了虚假或具有误导性的声明,未能对外披露其将博通收购高通交易单方面秘密通知给美国外资投资委员会(CFIUS),试图阻止这笔潜在交易。 网友评论:这是要搞事情呀~ 6.A站发文称遭黑客攻击 千万条用户数据外泄 6月13日凌晨AcFun弹幕视频网(A站)在其官网发布《关于AcFun受黑客攻击致用户数据外泄的公告》称,AcFun受黑客攻击,近千万条用户数据外泄,包含用户ID、用户昵称、加密存储的密码等信息。6根据公告显示,如果用户在2017年7月7日之后一直未登录过AcFun,密码加密强度不是最高级别,账号存在一定的安全风险,恳请尽快修改密码,如果用户在其他网站使用同一密码,也需要及时修改。 网友评论:一开始还以为是召回用户的特殊操作。 7.消息称小米确定将于6月25日启动在港招股 来自香港经济日报的报道显示,小米将于6月23日举行全球发售股份之新闻发布会。在一般情况下,新闻发布会下一个交易日将启动招股,即6月25日起招股。国内方面,小米更新了其CDR招股书。本次发行CDR所对应的基础股份占本次CDR和港股发行总规模(含老股发行规模)的比例不低于50%,也就是说,小米在上交所发行CDR对应的A股基础股份将多于港交所新发行股份,境内交易所将成为小米主上市地。 网友评论:@米粉们 推荐使用华为P20~ 8.罗永浩:刘海屏将被丢进历史的垃圾桶 6月13日晚间消息,在京东与锤子科技联合举办的专场直播上,锤子科技创始人、CEO罗永浩,以及吴德周等锤子科技高管与极客公园创始人张鹏展开对话。对话围绕锤子科技的产品进行,也涉及到了对手机行业的看法。在谈到手机的发展趋势时,罗永浩表示,刘海屏将被丢进历史的垃圾桶,而据锤子科技产品线&硬件研发副总裁吴德周透露,从今年下半年,或明年上半年开始,手机的趋势会是从大刘海向美人尖转向。 网友评论:言下之意:坚果R1是失败品。 9.韩国运营商重新开卖苹果iPhone 3GS:售价仅260元 2009年在韩国首次开卖的苹果iPhone 3GS将再次在该国开卖,韩国运营商SK Telink将于本月底在SK Seven Mobile在线综合商城正式开卖iPhone 3GS。iPhone 3GS于2009年6月8日在全球市场上市,5个月后该机在韩国上市。SK Telink重新出售的iPhone 3GS经过了“重新包装”,由于长时间保存在仓库中,在确定零件没有问题之后会重新包装,也就是说手机尚未被消费者使用,虽然其已经发布9年之久。包装盒中包含正品充电器,原装充电线和耳机。其价格是44,000韩元,约合人民币仅260元,用户无需购买该运营商的套餐就可以购买该机, 网友评论:情怀不是这么玩的~ 10.OPPO Find X官方规格表曝光:只剩外型仍神秘 6月14日消息,社交媒体推特上的一则推文,**了OPPO即将发布旗舰手机Find X的全部规格,现在只剩下Find X的外型设计尚未曝光。据该规格表指出, Find X拥有6.4英寸1080 x 2340的屏幕,搭载之前宣称配备的三星曲面Super AMOLED显示屏。它搭载高通顶级的Snapdragon 845芯片,配备8GB内存,128GB内部存储器(官方预告片指出也有256GB的版本)以及3,730mAh电池供电。 网友评论:一个喜欢装X的学生,考完后拿起锤子去当木匠了,还有一个一直勤俭节约的好学生,考完竟然烫了爆炸头!和隔壁班的美国学生一个样! 那么多帅哥美女,我只粽意你 【本周新闻】 AI预测世界杯夺冠是德国队...(北京时间)6月11日,星期一 云计算服务公司华云数据完成10亿元融资(北京时间)6月12日,星期二 中兴通讯与BIS达成和解协议,明日起股票复牌(北京时间)6月13日,星期三PaaS AI平台天云大数据完成一亿元增资(北京时间)6月14日,星期四 【更多内容,欢迎访问】http://forum.huaweicloud.com/forum.php? mod=forumdisplay&fid=569&filter=typeid&typeid=266 (请尊重劳动成果,转载请标明来源!)
  • 软件开发云实践训练营课程系列推荐(二):人脸识别Android应用
    5609 课程体验地址: http://www.huaweicloud.com/devcloud/practical/list-poj1.html 实践介绍近年来,人脸识别凭借其自然性、便利性、友好性等特点已经成为了人工智能领域中很火的一项技术。在App应用中的实名认证、图像编辑等功能都有其身影。 本实践介绍如何基于Gradle工具,开发一个简单的Android人脸识别应用,主要包含以下知识点: [*]• Gradle构建的生命周期 [*]• Gradle功能的目录结构 [*]• build.gradle配置文件 [*]• Android API:绘图 (android.graphics包) [*]• Android API:人脸检测(Face Detect) 步骤介绍:1. 入门实践 5611 2. 进阶实践 5610
  • 做开发十年,我总结出了这些开发经验
    本帖最后由 coding 于 2017-10-30 10:10 编辑在一线做了十年的开发,经历了网易、百度、腾讯研究院、MIG等几个地方,陆续做过3D游戏、2D页游、浏览器、移动端翻译app等。 积累了一些感悟。必然有依然幼稚的地方,就当抛砖引玉,聊为笑谈。 一、对于团队而言,流程太重要了行军打仗,你需要一个向导;如果没有向导,你需要一个地图;如果没有地图,至少要学习李广,找一匹识途的老马;如果你连老马也没有,那最好可以三个臭皮匠好好讨论,力图胜过一个诸葛亮;如果三个臭皮匠连好好讨论也做不到,那就是典型的乌合之众了,最好写代码前,点上三炷香,斟上一杯浊酒,先拜拜菩萨,再拜拜谷歌。 我个人属于性格温和的(程序员大多性格不错),但确实见过少数强势的人,说很多强势的话。在技术上一言而决,一听到任何反对就上升到私人恩怨。这样的风格,到底是刚愎自用,还是胸有成竹,就需要仔细判断了。 为什么说流程重要呢?实际上,如果团队上有孙悟空存在,去西天取经,大概也不需要什么流程,只要方向就可以了。 但作为普通的战士,应该先虑败。找人算命时,应该先听听不好的地方,好的地方就不用听了,总归是好的,不好的地方一定要听,这样才能规避。 这就是我的态度:先悲观一点,划清底线,考虑在这个底线上你该怎么做? 这是我做开发的一个习惯,但这个习惯肯定不适用于买房。 怎么划清底线呢?就是假想团队中没有孙悟空了,光靠你唐玄奘、猪八戒和沙和尚,应该怎么去取经。 这个月走什么地方,遇到山怎么走,遇到河怎么过,遇到路上有妖怪劫道,谁去抵挡。遇到路上有少女要搭救,怎么办?这就是流程,是原则。 我经历过一个流程很混乱的阶段。都是很多年前的事情了,可以拿出来说说,不涉及单个人。 2011年在百度浏览器团队时遇到几件让人影响深刻的事情。 有一次开会,产品拿出Google某个产品的DEMO,里面有一段很酷炫3D 效果,要求开发加上,只给2天时间,大家目瞪口呆。后续的开发为了赶节奏,导致非常多的bug,又为了修改bug,leader将所有的bug按照人员平均分配,导致不同模块间的同学相互修改。。。。。实在难以想象。好比让做花卷的厨子,去修改西湖醋鱼的味道。 最初的现象是:bug下降的慢,延伸bug反而增加,每个人都累的半死,代码风格极其杂乱,为了赶工导致的临时方案层出不穷; 到了中期:人员离职越来也多,代码难以维护,新加的需求与之前的临时方案冲突。 到了后期:想做一些修复,想调整架构,又要保证正常运行,其难度好比在一架飞行的飞机上拆换零件。 然后我也急忙离职了。。。。实在看不到成功的可能性。 后来到了腾讯的团队,感觉流程就规范多了。需求和bug有Tapd跟踪,产品发布按照节奏,需求提出前会和开发反复讨论可行性,有专门的质量跟踪,有专门的用户反馈,每天知道要做什么,也知道明天要做什么。有产品需求,也有开发需求!这个非常重要。很多团队,都是只有产品需求,开发好像牛一样,耕完地就不管了? 流程其实没那么复杂,就是各司其责+节奏。我们都是“哆瑞咪发梭拉西多”中的一员,各自有各自的责任,然后组合在一起,按照一个节奏跑起来。把该做的事情与该跑的节奏定好。 二、不要炫技,老老实实写代码 网上有一个段子,说有人要用JS实现一个简单的功能,然后朋友给他推荐了几十个库。 真的有必要吗?具体情况具体分析。 居家过日子,你只需要一套普通的工具就可以了;如果你是修车的,你需要一套修车的工具;如果你是光头强,你需要一台伐木机。 吃饭用筷子,用刀叉,都可以,但不要用杀猪刀,不要用丈八长矛!,当然也不能用牙签。 用什么工具,用什么库,问问过来人,多在KM上搜索一下。举个例子:android上加密,用SQLChpher就可以了,微信也在用,你当然可以学习;数据库ORM思想,用KM上推荐的GreenDAO就可以了;PC上3D引擎,用OGRE就可以了;小型游戏DEMO,用Irrlicht足够;写WebGL,用ThreeJS足够。 首先想想:一些大库hold的住吗,后续发展如何?这些库对安装包的体积影响有多大?有没有调研过同样的产品在用什么? 想清楚了再决定用什么,最好是跟随成功项目的脚步。 三、架构上实用+适用 很喜欢曾国藩的一句话:结硬寨、打呆仗。 一字长蛇阵、八门金锁阵,哪个好?iOS都是单个进程,微信Android版本3.5以前是单进程,3.5以后有独立的网络进程; PC浏览器的进程架构更加复杂,UI进程、内核进程、Render进程,而且还有根据页面多少的进程调节模型。 这些设计都很好,各有各的道理,都适用于当前的产品。所以我的观点是:首先分析当前产品的规模、性质,然后再设计架构。 在当前阶段达到:开发效率+架构的平衡;并向后展望3个月,或者半年左右,看看架构能不能适应。 我做腾讯翻译君时,曾反复犹豫要不要模仿微信加入独立的网络进程。后来逆向了有排在第一二位的竞品,最终采用了现在的主功能单进程模型。 产品规模、人员规模、功能阶段,具体问题具体分析。 四、既要有攻城之力,也要有熬战之气——BUG 产品开发完成后,必然有bug。其实开发人员在工作过程中,是有一定的直觉或者心理预判的,即:某个功能模块的质量如何。 这里面的质量包括:可维护性、扩展性、算法\渲染效率,还有就是bug与崩溃率。 功能开发完成后,就要开始守城了。 [indent]bug,一部分产生是由于架构带来的,例如比较复杂的架构,会导致复杂的实现细节; [/indent]但还有很大部分bug,其实是基于如下三个原因产生的: [*]对于某个api的不了解,或者对于某个平台,或者SDK版本的不了解。 举例而言:andrid里面非主线程,是不能直接处理UI相关的事情的;JAVA的内存释放也不是绝对的,相互指向是无法释放的;函数个数是有DEX问题制约的———————这些bug的产生,也是开发人员摸索学习的过程,经历过一次就不会再犯了。这是学习广度与熟练度的问题; [*]还有一些bug,是由于粗心大意导致的。例如空指针的问题,野指针的问题。在C的开发中,野指针的问题,GDI句柄的释放问题,这些都是严谨的代码需要避免的; 而又一些工具,或者方法是可以规避这些问题的,例如android中的利用@Nullable和@NonNull加强空指针检测等方法; [*]还有一些bug,是由于“使用情况各异导致的”。例如:偶现在某个模块crash。这里的本质还是因为逻辑的异常边界没有处理好。例如android上的OOM问题,还有PC上UI焦点导致的对象释放问题。这些异常情况,一部分靠测试发现,一部分靠用户反馈,还有一部分就靠自己的异常处理。例如Android中的try catch机制,其实就是遇到异常了,你能纠正错误的机会。 五、自审 每过一段时间,都要站在高空俯视自己,问问:到底是在承担过去,还是在改变未来。 如果之前程序代码质量不好,后面修改问题的时间就会比较多。到了开发的中期,得多问问自己,你在不停的改正以前的错误,还是在做新的东西。 如果修改错误的时间多一点,那就要注意自己的代码质量了! 六、注释 [indent]我很喜欢写注释。有大牛说:代码就是最好的注释。 可惜我还没有达到那个程度。所以,我会把注释写的非常清楚。 [/indent] [*]其一:为了自己以后维护的方便; [*]其二:为了其他人接手的方便。 [*]4004 [*] [*][indent]这是我在翻译君项目中写注释的方式。[/indent] [*]1:对于很复杂的逻辑,务必用12345的顺序依次写清楚; [*]2:对于函数中的某个参数,需要解释为什么要设置这个参数,尤其是公用工具类里面的函数—说清楚参数的背景含义,可以让其他调用者理解的更加清晰。 我一般不用英文写。虽然这样看起来格调很低,但胜在大家都能轻松的看懂。写代码不能太傲娇,写注释也不要太傲娇,目的是让你的搭档或者接手者,更轻松的理解,让她/他少加班。七、代码结构代码结构要清晰。有按照功能划分的,有按照UI结构划分的。还有公用工具类,有数据管理,有主逻辑控制。不管用哪种思想,有序的代码结构,可以让每个人感觉很干净。好比日本的收纳整理技巧让很多小资推崇,无非就是干净、整洁、便于管理。而且,还有一个重要的好处:代码结构表现出来的其实是——程序的一个模块\逻辑思想——让大家工作在不同的区域。八、代码风格代码风格统一!好比一家人,有叫Tom的,有叫安东尼的,还有叫流川枫、石破天、圣杰夫拉斯基,无所适从。理论上,看一个函数,就能从名称上区分哪些是成员变量,哪些是局部变量,哪些是全局静态值。除了命名统一外,还有一行代码最大的宽度,函数的连续调用长度等,头文件的包含风格,也最好有一个约定。类的出现时间,创建人名,最好也加上,看起来没用,但到了追踪问题时,就能看出时间线的好处。九、安全与逆向这是针对Android说的,还有PC插件也需要考虑。Android上首先要防止被别人逆向,我成功逆向并重新打包过有第一位和第二位的竞品。这似乎有点不可思议,但确实做到了。加固+混淆+代码判断,最好都有。安全上,可以看金刚扫描的漏洞,逐一修改就行。公司很多工具很好用的!十、开发效率[indent]开发效率可以用这些方式提升:[/indent] [*]构建公用工具类,方便大家使用 [*]使用开源的一些包,例如ORM思想的数据库等 [*]可以很快的找到问题。开发中,找bug的时间,往往是很多的。我用的方法有3个: 使用try catch; 拦截所有crash到我指定的地方;超多的Log,Log有统一的控制开关。 [*]借力:数据上报用灯塔,崩溃上报用bugly,公司KM上很多经验,拿过来用。 十一、安装包体积 [*]TINY压缩图片 [*]删除无效的资源文件 十二、UI渲染效率 [*]UI是用户的第一感觉;UI快并稳定,第一感觉就不会差太多;管理好内存,基本管理好了一半crash;管理好UI,等于管理了人机交互感受。 [*]UI上的开发是:渲染效率与渲染效果的平衡。
总条数:181 到第
上滑加载中