首页 文章 精选 留言 我的

精选列表

搜索[一键安装包],共10000篇文章
优秀的个人博客,低调大师

谷歌搜索测试「AI Mode」:整合多模态和实时信息、一键解答复杂问题

谷歌公司昨日发布博文,邀请谷歌搜索用户测试全新的“AI 模式”(AI Mode)。用户可以提出更复杂的问题,并基于搜索结果,AI 生成更详细、更直观的答案。 谷歌表示,AI 模式将提供更高级的推理、思考和多模态能力,帮助用户更高效地获取信息。 谷歌表示,以往用户在处理复杂问题时,往往需要多次搜索才能解决,而“AI 模式”能够解决这个痛点。用户只需在桌面或移动设备上输入查询,点击新的“AI 模式”按钮即可体验。 此外,AI 模式页面底部还提供了“深入探索”快捷入口,用户可直接跳过常规搜索结果,专注于 AI 生成的内容。 在移动设备上,用户可以通过上传图片或语音输入查询,但目前仅支持文本输出。AI 模式还支持历史搜索记录,方便用户查看过往查询。 AI 模式由定制版的 Gemini 2.0 驱动,能够访问实时数据源和知识图谱等资源。它通过“查询扩展”技术,从多个子主题和数据源中提取信息,并综合呈现。如果信息不足,用户将被引导至网页搜索结果。 案例 1:鸟类迁徙路径 用户提问:“候鸟如何知道迁徙路线?”AI 模式会进行多步搜索并组织结果,在移动设备上以轮播形式展示来源网站,随后提供简明答案和相关文章。 案例 2:户外拍摄最佳时间 用户询问:“本周在波士顿公共花园拍摄户外订婚照的最佳时间是什么?”AI 模式结合实时天气信息,推荐具体日期和黄金时段,并注明日落时间。 案例 3:睡眠追踪设备对比 用户提问:“智能戒指、智能手表和追踪垫在睡眠追踪功能上有何区别?”AI 模式以对比表格形式呈现答案,并支持后续问题,如“深度睡眠时心率如何变化?” 从早期测试来看,AI 模式的查询长度是传统搜索的两倍,用户有 25% 的时间会进行后续提问。谷歌计划逐步向所有用户开放这一功能,目前测试主要面向高级用户。

优秀的个人博客,低调大师

HMS Core 视频编辑服务开放模板能力,助力用户一键Get同款酷炫视频

前言 短视频模板,是快捷创作短视频的一种方式,一般由专业设计师或模板创作人制作,用户只需替换视频模板中的部分素材,便可生成一支与模板一样的创意视频。这种省时省力、无需“烧脑”构思创意的“套模板”视频创作方法,深受用户喜爱。 应用场景 短视频模板在短视频APP、视频剪辑工具、拍摄美化工具、旅游出行、电商、新闻等垂域应用广泛。例如: 在视频剪辑工具、拍摄美化工具垂域,短视频模板功能可以降低视频剪辑门槛、激发用户创作,进而提升应用的用户活跃度; 在旅游出行应用中,用户可以通过“套模板”的方式用视频记录旅途中的风土人情; 在电商应用中,商家可通过套用商品展示模板的方式,快速制作商品展示视频; 在新闻资讯应用中,用户可套用新闻模板,快速发布新闻讯息。 华为HMS Core视频编辑服务模板能力 HMS Core视频编辑服务近期开放了模板功能,并预置了一些不同场景的视频模板供开发者测试使用,后续还将陆续丰富模板品类和数量。 接入简单、省时省力 HMS Core视频编辑服务提供了涵盖模板栏目列表、模板详情、模板工程、导入导出等详细的开发接口、接口说明和接入步骤,代码简单、清晰,开发省时省力。 云端管理、高效运营 HMS Core视频编辑服务在AGC后台为开发者提供了编排素材的后台,运营人员可以在web端完成模板栏目编排、标签管理、国家/地区设置、上下架模板内容、快速检索查询信息等。 集成代码 1. 开发准备 详细准备步骤可参考华为开发者联盟官网 2. 编辑工程集成 2.1 设置应用的鉴权信息 可以通过api_key或者Access Token来设置应用鉴权信息。 通过setAccessToken方法设置Access Token,在应用启动时初始化设置一次即可,无需多次设置。 MediaApplication.getInstance().setAccessToken("your access token"); 通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。 MediaApplication.getInstance().setApiKey("your ApiKey"); 2.2设置唯一标识ID,即License ID。 License ID是进行管控的有效凭证,您要保证设置License ID的唯一性。 MediaApplication.getInstance().setLicenseId("License ID"); 2.2.1初始化Editor运行环境 创建编辑工程,需要首先创建Editor对象并初始化其运行环境。当离开编辑工程时,应释放Editor实例。 (1) 创建Editor对象 HuaweiVideoEditor editor = HuaweiVideoEditor.create(getApplicationContext()); (2) 指定预览窗口的布局位置 预览窗口负责视频图像画面的渲染,由视频编辑原子能力SDK内部创建SurfaceView来实现。在创建窗口之前,需要在您的App中指定预览窗口的布局位置。 <LinearLayout android:id="@+id/video_content_layout" android:layout_width="0dp" android:layout_height="0dp" android:background="@color/video_edit_main_bg_color" android:gravity="center" android:orientation="vertical" /> // 指定预览窗口 LinearLayout mSdkPreviewContainer = view.findViewById(R.id.video_content_layout); // 设置预览窗口承载的布局 editor.setDisplay(mSdkPreviewContainer); (3) 初始化运行环境,如果License鉴权失败,会抛出LicenseException。 当Editor对象创建之后,此时还没有占用实际的系统资源,需要手动选择其环境初始化的时机,此时视频编辑原子能力SDK内部会创建必须的线程和定时器等。 try { editor.initEnvironment(); } catch (LicenseException error) { SmartLog.e(TAG, "initEnvironment failed: " + error.getErrorMsg()); finish(); return; } 3. 模板能力集成 // 获取模板栏目列表 final HVEColumnInfo[] column = new HVEColumnInfo[1]; HVETemplateManager.getInstance().getColumnInfos(new HVETemplateManager.HVETemplateColumnsCallback() { @Override public void onSuccess(List<HVEColumnInfo> result) { // 获取模板栏目列表成功 column[0] = result.get(0); } @Override public void onFail(int error) { // 获取模板栏目列表失败 } }); // 获取模板详情 final String[] templateIds = new String[1]; // size为需要请求数据的数量 > 0,offset为需要请求数据的偏移量 ≥ 0,true代表强制获取网络数据 HVETemplateManager.getInstance().getTemplateInfos(column[0].getColumnId(), size, offset, true, new HVETemplateManager.HVETemplateInfosCallback() { @Override public void onSuccess(List<HVETemplateInfo> result, boolean hasMore) { // 获取模板详情成功 HVETemplateInfo templateInfo = result.get(0); // 获取模板ID templateIds[0] = templateInfo.getId(); } @Override public void onFail(int errorCode) { // 获取模板详情失败 } }); // 待获取模板详情成功后,获取模板ID String templateId = templateIds[0]; // 获取模板工程 final List<HVETemplateElement>[] editableElementList = new ArrayList[1];; HVETemplateManager.getInstance().getTemplateProject(templateId, new HVETemplateManager.HVETemplateProjectCallback() { @Override public void onSuccess(List<HVETemplateElement> editableElements) { // 获取成功后跳转到选择资源界面,把选中的本地资源路径更新到editableElements editableElementList[0] = editableElements; } @Override public void onProgress(int progress) { // 获取进度 } @Override public void onFail(int errorCode) { // 获取失败 } }); // 准备模板工程 HVETemplateManager.getInstance().prepareTemplateProject(templateId, new HVETemplateManager.HVETemplateProjectPrepareCallback() { @Override public void onSuccess() { // 准备模板工程成功,可以生成HuaweiVideoEditor实例进行播放、预览、导出等操作 } @Override public void onProgress(int progress) { // 准备进度 } @Override public void onFail(int errorCode) { // 准备失败 } }); // 在模板准备成功后,生成HuaweiVideoEditor实例 // 拥有editor之后就可以进行播放或者导出操作,详情见播放时间线和导出 HuaweiVideoEditor editor = HuaweiVideoEditor.create(templateId, editableElementList[0]); try { editor.initEnvironment(); } catch (LicenseException e) { SmartLog.e(TAG, "editor initEnvironment ERROR."); } Demo演示 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gitee 关注我们,第一时间了解 HMS Core 最新技术资讯~

优秀的个人博客,低调大师

别再问WiFi密码了,HMS Core统一扫码服务让手机一键联网

现代生活离不开网络,在餐厅、商场等公共场所,手机连接WiFi一直是高频使用场景。虽然公共场所的免费WiFi越来越多,但网络连接过程却很麻烦。有的需要打开网页注册或点击广告链接才能上网,还有的要求下载特定App才能连接。 那么有没有什么更方便的联网方式呢?“扫码联网”提出了解决方案,商家可以在店放置包含WiFi信息的二维码。用户打开手机相机扫码即可连接WiFi,还支持将二维码分享给身边好友,使入网更快、更直观,并且无需担心隐私泄露、被推送无用信息等问题。 效果展示 实现原理 通过HMS Core统一扫码服务的码生成和扫码能力,轻松实现扫码连WiFi这一场景。 开发实战 一、构建扫码功能 开发准备 1.1 配置华为Maven仓地址 在项目中“buildscript > repositories”中配置HMS Core SDK的Maven仓地址。在“allprojects > repositories”中配置HMS Core SDK的Maven仓地址。 buildscript { repositories { google() jcenter() // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} } } allprojects { repositories { google() jcenter() // 配置HMS Core SDK的Maven仓地址。 maven {url 'https://developer.huawei.com/repo/'} } } Gradle 7.0版本后,“allprojects > repositories”配置已迁移到项目级“settings.gradle”文件中。“settings.gradle”文件配置示例如下: dependencyResolutionManagement { ... repositories { google() jcenter() maven {url 'https://developer.huawei.com/repo/'} } } 1.2 添加编译依赖 位置应用build.gradle dependencies{ //Scan SDK implementation 'com.huawei.hms:scan:2.3.0.300' } 1.3 代码混淆 在应用级根目录下打开混淆配置文件“proguard-rules.pro”,加入排除HMS Core SDK的混淆配置脚本。 -ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hianalytics.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;} 1.4 Manifest.xml添加权限 <!--相机权限--> <uses-permission android:name="android.permission.CAMERA" /> <!--文件读取权限--> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 1.5 申请动态权限 ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA, Manifest.permission.READ_EXTERNAL_STORAGE}, requestCode); 1.6 申请权限结果 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { super.onRequestPermissionsResult(requestCode, permissions, grantResults); if (permissions == null || grantResults == null) { return; } // 申请权限成功或已有权限 if (requestCode == CAMERA_REQ_CODE) { // Default View Mode方式扫码接口 // 参数说明: // activity 请求扫码的activity // requestCode 扫码请求的请求码,用于鉴定activity返回时是否从扫码界面返回。 // option 扫码格式选项,可以置为“null” ScanUtil.startScan(this, REQUEST_CODE_SCAN_ONE, new HmsScanAnalyzerOptions.Creator().create()); } } 1.7 回调接口接收扫码结果,相机扫码和导入图片扫码均通过该接口返回。 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK || data == null) { return; } if (requestCode == REQUEST_CODE_SCAN_ONE) { // 导入图片扫描返回结果 HmsScan hmsScan = data.getParcelableExtra(ScanUtil.RESULT); if (hmsScan != null) { // 码值结果 rawResult自定义TextView rawResult.setText(hmsScan.getOriginalValue()); } } } 二、构建码生成功能 构建扫码功能同样需要配置Marven仓地址,添加编译依赖和配置混淆脚本,参考上方1.1,1.2和1.3 2.1 Manifest.xml添加权限 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 2.2 申请动态权限 ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},requestCode); 2.3 申请权限结果 @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { if (permissions == null || grantResults == null) { return; } if (grantResults[0] == PackageManager.PERMISSION_GRANTED && requestCode == GENERATE_CODE) { Intent intent = new Intent(this, GenerateCodeActivity.class); this.startActivity(intent); } } 2.4 生成二维码 public void generateCodeBtnClick(View v) { try { HmsBuildBitmapOption options = new HmsBuildBitmapOption.Creator() .setBitmapMargin(margin) .setBitmapColor(color) .setBitmapBackgroundColor(background) .create(); resultImage = ScanUtil.buildBitmap(content, type, width, height, options); barcodeImage.setImageBitmap(resultImage); } catch (WriterException e) { Toast.makeText(this, "Parameter Error!", Toast.LENGTH_SHORT).show(); } } 2.5 保存二维码 public void saveCodeBtnClick(View v) { if (resultImage == null) { Toast.makeText(GenerateCodeActivity.this, "Please generate barcode first!", Toast.LENGTH_LONG).show(); return; } try { String fileName = System.currentTimeMillis() + ".jpg"; String storePath = Environment.getExternalStorageDirectory().getAbsolutePath(); File appDir = new File(storePath); if (!appDir.exists()) { appDir.mkdir(); } File file = new File(appDir, fileName); FileOutputStream fileOutputStream = new FileOutputStream(file); boolean isSuccess = resultImage.compress(Bitmap.CompressFormat.JPEG, 70, fileOutputStream); fileOutputStream.flush(); fileOutputStream.close(); Uri uri = Uri.fromFile(file); GenerateCodeActivity.this.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri)); if (isSuccess) { Toast.makeText(GenerateCodeActivity.this, "Barcode has been saved locally", Toast.LENGTH_LONG).show(); } else { Toast.makeText(GenerateCodeActivity.this, "Barcode save failed", Toast.LENGTH_SHORT).show(); } } catch (Exception e) { Toast.makeText(GenerateCodeActivity.this, "Unkown Error", Toast.LENGTH_SHORT).show(); } } 欲了解更多HMS Core统一扫码服务详情,请参阅: https://developer.huawei.com/consumer/cn/doc/development/HMSCore-Guides/service-introduction-0000001050041994?ha_source=hms1 华为开发者联盟官网 获取开发指导文档 参与开发者讨论请到Reddit社区 下载demo和示例代码请到Github 解决集成问题请到Stack Overflow

优秀的个人博客,低调大师

《小程序云✖️ IDE 免费插件,一键开发部署,实现一云多端的业务战略》

今年3月份,在阿里云北京峰会上,阿里巴巴正式发布了“阿里巴巴小程序繁星计划”,截至当前,已经有成千上万的开发者加入这个计划,使得小程序得到蓬勃发展,然而不可避免的是,这些服务加重了对云端的开发部署、运行运维等能力的依赖。 直播预告:9月11日(周三)晚上8点,中间件小姐姐萝莉音直播,手把手教你玩转插件和小程序云,学习工作两不误!直播间地址:https://promotion.aliyun.com/ntms/act/cloudtookit/zhibo1.html 为了满足对众多小程序场景的需求,阿里发布了「小程序云」,为开发者提供了“一次开发,全网运行”的能力,支持 Spring Boot、Node.js 等主流开发框架的运行环境,并在一朵云内实现统一的资源管理、数据运营和业务设计,实现一云多端的业务战略。该一站式小程序云服务最大的亮点

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册