
- 更新时间
- 2019年9月4日 [2]
- 源码模式
- 自由及开放源代码软件
- 发行日期
- 2008年9月23日
- 软件许可
- Apache License、 GPL等
- 创始人
- 安迪·鲁宾(Andy Rubin)
- 软件语言
- C/C++(底层) Java,Kotlin等(应用层)
- 开发商
- Google、开放手持设备联盟
- 发行商
- Google - 谷歌(美国)
- 软件版本
- Android 10(正式版) [2]
- 软件平台
- 内核类型
- 宏内核(Linux内核)
- 测试版本
- Android 11 Developer Preview 3(开发者预览版)
- 系统家族
- 类Unix,Linux
- 软件名称
- Android(安卓)
-
安卓手机当电脑摄像头(DroidCam网盘及使用方法)
2018-09-11 18:20:01最近校招笔试,没有摄像头,所以打起了手机摄像头的主意,搜...手机 小米mix2s,安卓8.0。 从网盘下载文件,分别安装在电脑和手机上。 打开手机端和电脑端,把手机界面Droidcam Port后的数字填在电脑上。 如...网盘 提取码:
q4hx
2020.12.06 更新
重新下了软件,手机安卓10也能用了。
2020.3.16更新
更新了一下apk,好久没用发现 找不到驱动,小米驱动又安不上。
还是推荐用wifi链接吧,在局域网下很流畅,也不用管驱动这些麻烦事。
- 安装环境:
- 笔记本 win10专业版
- 手机 小米mix2s,安卓8.0。
原文
- 从网盘下载文件,分别安装在电脑和手机上。
- 打开手机端和电脑端,把手机界面Droidcam Port后的数字填在电脑上。
- 如果用WiFi,ip也要填上,这里主要是用USB。
- 手机要打开usb调试,具体百度。
- 电脑端进入droidcam文件夹,打开adb文件夹中的adb.exe。
- 插上USB线,确保usb调试打开,选择通过usb传输文件,确保两端软件都打开后,点击start。
- 然后就出现画面了。
- 网上答题需要在浏览器中更改默认摄像头,用360极速浏览器做例子:
- 选项中搜索摄像头
- 找到选项,更改
- 如果用QQ,进入设置,同理。
- 默认是480p(4:3)的,可以点开文件夹中的
Toggle HD Mode
,选择清晰度后重启,不过越清晰延迟越大,默认就够用了。 - 如果用usb连接用不了,可能需要装驱动,去 驱动程序 下载手机厂商的驱动,在设备管理器中更新程序(驱动下载页面会教怎么更新),如果安不上可能还需要 禁用数字签名 ,这个百度很全,就不说了。
如果网盘下不了,麻烦告诉我
- 安装环境:
-
2015最新安卓SDK完整包下载 绿色版
2015-04-23 08:41:352015最新安卓SDK完整包下载 所以SDK里面版本都已下好 -
安卓基础
2018-11-08 20:23:25安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础安卓基础...展开全文 -
安卓蓝牙打印机
2013-10-18 13:36:55安卓手机通过蓝牙设备连接蓝牙打印机,实现打印功能。 -
震惊!!十五天开发出一款安卓打卡app,并且成功发布!
2020-04-22 14:34:45十五天开发一款安卓APP并成功发布摘要功能展示,页面展示功能展示项目查看安卓app下载:简化版的微信小程序开发过程界面设计功能设计后台开发前端开发安卓app一些功能的实现安卓登录状态保存页面获取登录用户的信息...震惊!十五天开发一款安卓APP并成功发布
摘要
假期宅在家里,现在正处于大三,面临找工作和考研的两种选择。但是对找工作其实没有太大的兴趣,于是便准备考研。然后想着手记录一下考研的生活点滴,作为以后的一个回忆。毕竟考研是最后一次可以通过努力来改变学历的机会。然后就在应用市场和小程序搜罗各种各样的打卡app或者小程序。但是都没有符合自己的要求的。于是就萌生了开发一款属于自己的打卡小程序。刚开始做了个一个小程序并且成功发布了。叫做”21天习惯卡“,功能比较简化。但是开发完小程序之后并不满足,于是又萌生了开发安卓的想法。这个安卓并不是普通的安卓,而是通过uniapp开发的安卓,就相当于一个web安卓应用。
功能展示,页面展示
功能展示
项目查看
安卓app下载:
简化版的微信小程序
开发过程
从来没有接触过uniapp,这个寒假是第一接触uniapp,但是看着uniapp使用的vue。还是比较方便上手的。
界面设计
dcloud社区提供了很多的插件还有模板,在加上之前也学习过前端。于是就自己绘制设计稿。纯手绘,所以这里就不跟大家展示了。先想了一下功能,然后绘制样式,指定某个部位点击跳转到某个页面。其实说着简单,画起来是真不容易。因为逻辑啥的要考虑清楚,包括页面传参,参数也不能出错,每个页面跳转需要的参数也是不同的。
功能设计
预期设想的功能:
1.打卡圈:分为两种,公共打卡圈,私人打卡圈。私人打卡圈可以设置是否可以被公共访问
2.每日打卡:刚开始想的是只有打卡内容,没考虑打卡图片的功能。后来发现没有上传图片不太完善, 于是加入打卡上传功能。
3.打卡日历:查看每日打卡
4.打卡图表:查看打卡数据
5.图文圈子:可以公开发布自己的内容,可被推荐至全部人查看。
后期新加的功能:
积分功能:为了以后的资源分享app做准备。
会员功能:根据积分的多少自动评定,不收费,也是为了资源app做准备。
匿名发泄:在我们坚持习惯的时候,总会有很多的琐事来打扰我们,而我们也无从去发泄,于是就开发了匿名发泄的功能,在这里头像和昵称都是随机生成的没人知道是谁发泄的,但是说出来总归是好的。
(发泄评论功能还在开发中)后台开发
后台采用Java语言,数据库采用mysql,挂载在阿里云服务器上。
前端开发
使用了两个大佬的组件库的一些内容,同时也自己开发了一些页面。同时也根据自己的需要二次开发了大佬的组件库
安卓app一些功能的实现
安卓登录状态保存
引入store
首先在main.js中加入如下一句话,引入storeimport store from './store'
然后创建store目录,创建index.js文件,在里面写入
import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) const store = new Vuex.Store({ state: { /** * 是否需要强制登录 */ forcedLogin: false, hasLogin: false, userinfo:{} }, mutations: { login(state, userinfo) {//登录方法 state.userinfo = userinfo; state.hasLogin = true; uni.setStorage({ key: 'userinfo',//登录用户的信息 data: userinfo }) uni.setStorage({ key:'hasLogin',//登录状态 data:true }) }, logout(state) {//注销登录方法 state.userinfo = {}; state.hasLogin = false; uni.removeStorage({ key: 'userinfo'//抹除登录用户信息 }); uni.removeStorage({ key:'hasLogin'//抹除登录状态 }) } } }) export default store
完成之后,则需要在使用该方法的页面加入
import { mapState, mapMutations } from 'vuex'; ...mapMutations(['login']) //登录页面引入 ...mapMutations(['logout']) //注销页面引入
页面获取登录用户的信息
uni.getStorage({ key: 'userinfo',//获取缓存中的用户信息 success(e) { that.openid=e.data.openid//用户的唯一标志 console.log(e.data) if (e.data) { uni.request({ url: 'url',//获取数据的url data: { }, method: 'POST', header: { "Content-Type": "application/x-www-form-urlencoded" }, success: (res) => {}, fail: () => { uni.showModal({ title:'您好,系统正在维护中' }) } }) }else { uni.navigateTo({//获取失败返回登录界面 url: '../login/login' }) } })
下拉刷新功能
uniapp和小程序一样,需要开启onpulldownrefresh
在pages.json内的对应页面的style中加入"enablePullDownRefresh": true, // 开启下拉 "backgroundTextStyle": "dark"
然后在页面内的onPullDownRefresh方法中加入需要刷新数据的请求接口
onPullDownRefresh() { var that=this uni.request({ url: 'url', data: { }, method: 'POST', header: { "Content-Type": "application/x-www-form-urlencoded" }, success: (res) => { uni.stopPullDownRefresh() } }) },
打卡卡片
作为一个打卡app,打卡卡片的生成至关重要,虽然不是所有人都会去保存这个打卡卡片。
但是打卡卡片是我们打卡完成的唯一证据。绘制卡片
var now = new Date(); var year = now.getFullYear(); //年 var month = now.getMonth() + 1; //月 var day = now.getDate(); var hour=now.getHours(); var minute=now.getMinutes(); var reallywight=uni.getSystemInfoSync().windowWidth var reallyhight=uni.getSystemInfoSync().windowHeight var wigth=uni.getSystemInfoSync().windowWidth-50 var hight=uni.getSystemInfoSync().windowHeight-90 var height=uni.getSystemInfoSync().windowHeight-190 const ctx =uni.createCanvasContext('myCanvas'); ctx.drawImage( "../../static/cards/card19.png" , 25 ,25 ,wigth,wigth*1.77 ); //绘制图 ctx.save() ctx.setFillStyle("#FFFFFF") ctx.font = 'normal 16px sans-serif'; ctx.fillText("每/",wigth-80,70) ctx.fillText("日/",wigth-56,70) ctx.fillText("一/",wigth-32,70) ctx.fillText("签",wigth-8,70) var nowtime=hour+":"+minute ctx.fillText(nowtime,wigth-56,100) ctx.setFillStyle("#FFFFFF") ctx.setFontSize(50)//设置字体大小,默认10 ctx.textAlign = 'center' // 设置位置 ctx.font = 'normal 40px sans-serif'; // 字体样式 ctx.fillText(day , 60, 80); ctx.font = 'normal 15px sans-serif'; ctx.fillText("⛪枣庄市",70,120) ctx.font = 'normal 10px sans-serif'; ctx.fillText("21天习惯打卡",60, wigth*1.70-45) ctx.save() ctx.font = 'normal 12px sans-serif'; var dayy=year+"."+month ctx.fillText(dayy,60,100) ctx.save() var text="所有的习惯以,不可见的程度积聚起来,如百溪汇于川,百川流于海!" ctx.font = '30px FZShuTi'; var str= new Array(); str=text.split(","); // ctx.textAlign="center"; var uphight=0 for (var i=0;i<str.length;i++){ ctx.font = '30px shuti'; ctx.fillText(str[i], reallywight/2, height/2+uphight) uphight+=40 } ctx.font = 'normal 20px FZYaoti'; ctx.fillText("考研记录生活圈子",wigth-80,wigth*1.70-25) ctx.font = 'normal 20px FZYaoti'; ctx.fillText("已打卡10天",wigth-50,wigth*1.77-15) ctx.draw()
卡片适配问题
屏幕问题
而开发打卡卡片就需要用到canvas来绘制打卡卡片了。而且手机的屏幕都不一样,所以我们就要考虑卡片在不同手机的排版问题。
在这个地方,我采用了获取用户手机屏幕宽度和高度的方法,虽然有些特殊手机也会出现一些格式错乱,但是只是稍微有一点点移位。问题不大文字换行问题
两种实现方法。
一,适用于文字长度不知道,也不知道具体输出的问题
将文字拆分,先得到字符串的长度,然后通过split分割。
通过循环串接字符串,当到达设定的宽度的时候自动绘制,然后字符串清空,继续串接
直到绘制到最后一行。二,文字内容我们已经事先得知
当我们开发一些打卡app的时候,输出的内容我们都是规定好的,随机生成我们数组内的字符串,这个时候就可以规定字符串内的拆分符号在我的开发中,我是在20句名言中随机生成一个句子,内容已经知道,于是采用了第二种开发方式
var text="所有的习惯以,不可见的程度积聚起来,如百溪汇于川,百川流于海!"//假设是随机生成的橘子 ctx.font = '30px FZShuTi'; var str= new Array(); str=text.split(","); //拆分句子 // ctx.textAlign="center"; var uphight=0 for (var i=0;i<str.length;i++){ ctx.font = '30px shuti'; ctx.fillText(str[i], reallywight/2, height/2+uphight) uphight+=40 }
总结
通过这次打卡app的开发和设计,彻底了解了uniapp的工作机制。同时,自己也有了一些新的想法。就像是上文说的积分为资源app做准备。
下一步就是开发资源app,我们通过打卡获得积分,然后去领取自己需要的资源,然后在打卡资源的学习,循循渐进,通过打卡和资源获取,提高自己的能力。希望以后开发出来的app能够帮到大家。 -
安卓Banner的使用
2020-09-05 20:21:29安卓Banner控件的简单实现。效果如下所示:
(请忽略下方的GridView)
banner的使用其实很简单,就三个步骤:- 引入包:
implementation 'com.github.bumptech.glide:glide:4.11.0' implementation 'jp.wasabeef:glide-transformations:4.0.1' implementation 'com.youth.banner:banner:1.4.10'
- 简单定义图片加载器
package com.example.edm.Utils; import android.content.Context; import android.widget.ImageView; import com.bumptech.glide.Glide; import com.youth.banner.loader.ImageLoader; /** * Created by KI on 2020/9/5. */ public class GlideImageLoader extends ImageLoader { public void displayImage(Context context, Object path, ImageView imageView) { Glide.with(context).load(path).into(imageView); } }
- 初始化banner
private void initBanner(View v) { ArrayList<Integer> list = new ArrayList<>(); list.add(R.drawable.ncepu_1); list.add(R.drawable.ncepu_2); list.add(R.drawable.ncepu_3); list.add(R.drawable.ncepu_4); list.add(R.drawable.ncepu_5); banner = v.findViewById(R.id.banner); //设置banner样式 banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR); //设置指示器位置(当banner模式中有指示器时) banner.setIndicatorGravity(BannerConfig.CENTER); //设置图片加载器 banner.setImageLoader(new GlideImageLoader()); //设置图片集合 banner.setImages(list); //设置banner动画效果 banner.setBannerAnimation(Transformer.Default); //设置自动轮播,默认为true banner.isAutoPlay(true); //设置轮播时间 banner.setDelayTime(3000); banner.start(); }
布局文件:
<com.youth.banner.Banner android:id="@+id/banner" android:layout_width="match_parent" android:layout_height="180dp" app:indicator_height="6dp" app:indicator_margin="5dp" app:indicator_width="6dp"> </com.youth.banner.Banner>
-
安卓开发必学书籍(30本合集)
2013-05-03 20:13:42安卓开发必学书籍(30本合集) 安卓开发必学书籍(30本合集) 免积分 C语言\Android+移植技術.7z C语言\Android_C、C++_开发.7z C语言\JNI程序员指南与规范.rar C语言\NDKjni.rar C语言\多线程的JNI+Native.7z ... -
Intellij IDEA的java环境与安卓sdk配置实例教程
2016-11-18 10:17:46Intellij IDEA的java环境与安卓sdk配置,使用java的编译器进行开发安卓项目的sdk配置实例教程。 -
安卓手机m3u8转为mp4格式100%有效的方法
2019-10-03 22:42:43首先推荐两款安卓手机上全网视频下载神器 X浏览器和QQ浏览器 虽然我平时用安卓手机的X浏览器(这款浏览器强烈推荐使用)的嗅探资源媒体功能就已经能下载90%的网络视频,但是还是有些视频格式比较奇葩(如斗鱼的m3u8... -
安卓手机渗透测试
2019-11-04 16:30:00安卓系统最为市场上占有量最高的移动操作系统,拥有极其广泛的用户基础,大量的个人数据和商业数据都存储在安卓移动设备上。 本专栏将从最基础的实验环境搭建,软件安装使用开始讲。没有复杂的原理讲解,更多的... -
大屏安卓车载导航刷机包_安卓11系统可无线连接车载安卓多媒体
2020-11-27 13:39:35日前我们获悉,安卓11正式版有望于2020年内正式发布,安装了新系统的手机将可无线连接到安卓汽车系统(Android Auto),方便驾驶者使用。现有的安卓手机可通过数据线的形式连接到安卓汽车系统,并可在车载大屏上进行... -
大疆无人机安卓Mobile Sdk开发(一)简单介绍
2019-03-29 16:08:16大疆无人机安卓Mobile Sdk开发(一)简单介绍 大疆无人机安卓Mobile Sdk开发(二)连接无人机,获取无人机信息 大疆官方提供了安卓sdk供开发者使用,这是地址... -
安卓手机与蓝牙模块联合调试(一)——蓝牙模块的串口通讯
2018-08-28 15:56:19(1)安卓手机与蓝牙模块联合调试(一)——蓝牙模块的串口通讯 (2)安卓手机与蓝牙模块联合调试(二)—— 单片机蓝牙控制LED灯亮灭(上) (3)安卓手机与蓝牙模块联合调试(三)—— 单片机蓝牙控制LED灯亮灭... -
安卓app开发-02-安卓app快速开发
2018-09-18 22:00:07安卓app开发-02-安卓app开发流程 上一篇介绍了安卓 app 开发的工具和环境配置,本篇不涉及编程技术,适合小团队快速高效开发 APP制作流程 当有一个APP创意,该如何实现呢?是花数十万找APP外包?自己能不能... -
安卓OTG 安卓转串口 安卓手机与单片机通信 USB转串口
2018-02-12 17:10:28随着物联网发展,很多的安卓网关出现,如果安卓跟单片机结合那就非常完美了。目前安卓手机跟单片机通信都是通过蓝牙或者wifi的方式无线通信,好处是可以分开长距离通信,但是往往使用的时候安卓板子跟单片机都在一块... -
安卓APP的http访问权限
2019-09-24 19:02:00用 Delphi 写一个安卓 APP,用 TIdHTTP 去访问一个 WEB 服务器,不行。网上查了一下,发现需要这样做: 在 APP 的工程目录下,有一个 XML 文件,“AndroidManifest.template.xml”,用文本 编辑器打开它: 在<... -
安卓仿苹果键盘输入法_仿ios输入法安卓版
2020-12-23 16:44:12仿ios输入法安卓版是一款非常有意思的手机输入法软件,这款软件可以让你用安卓手机就能体验到苹果输入法的打字体验,仿ios输入法安卓版体积小、运行快,可以满足用户打字的新鲜感,没有用过苹果手机的用户,可以下载... -
安卓开发:安卓应用上架主流平台汇总
2018-03-05 16:49:14今天来分享一下安卓的上架平台,说起来安卓我觉得是比iOS麻烦的,毕竟安卓需要适配各个手机的型号,包括尺寸之类的,而且安卓的上架平台也比较多,但是主流的也就20个平台左右吧。 安卓各应用市场的入口整理。... -
Instagram安卓下载 Instagram最新安卓版v170.0.0.30.474
2020-07-21 09:20:39Instagram安装包为Android安装包,大小33.8M,安卓手机下载后即可安装使用。程序经官网下载最新版本,软件为官网最新原版。由于Instagram安卓版更新非常频繁,请收藏本网页以便下次升级更新。 Instagram最新安卓版... -
用Python写安卓APP,你怕不怕
2019-09-07 15:13:29我们知道了Python可以开发桌面应用...那么他能否挑战一下安卓呢? 我们可以使用 kivy 开发安卓 APP,Kivy 是一套专门用于跨平台快速应用开发的开源框架,使用 Python 和 Cython 编写,对于多点触控有着非常良好... -
安卓模拟器简介
2019-01-22 14:39:15安卓模拟器简介 安卓模拟器是能在PC平台模拟安卓手机系统的模拟器软件。安卓模拟器能在电脑上模拟出安卓手机运行环境,安卓模拟器让你在电脑上也能体验安卓游戏和应用,在各大下载站都能够下载。 比较常用的安卓... -
安卓开发技术分享
2018-11-26 19:38:51先占个坑,后面一点点把安卓开发相关的知识系统的整理上来。 一、安卓开发入门 二、安卓常用开发技术框架 三、最新安卓开发技术 四、安卓开发优秀资源 五、软件工程 六、职业规划及进阶 ... -
安卓系统结构和安卓开发目录结构
2018-09-12 10:04:15由于安卓的系统架构说起来很抽象,所以博主画了一张图来帮助大家了解结构 Android系统架构 1、 Linux内核 安卓的运行并不是凭空而来的,而是依赖于Linux内核之上,因此,内核就显得极为重要,没有了内核就像折... -
安卓R,安卓11给Pixel 2 XL 刷机流程
2020-03-29 22:06:40安卓11(安卓R)现在还是预览版本,正式版本还没出来。本人有个Google Pixel 2 XL手机, 突发奇想,刷入安卓11,说干就干。 下面是Windows电脑操作流程。 打开 https://developer.android.com/preview/download ... -
安卓开发——登录界面
2018-09-12 09:26:53安卓系统体系架构思维导图 -
安卓插件(安卓应用插件化)
2019-03-15 14:23:33安卓应用插件化: 为了减小安卓应用单个包的大小,方便应用功能的动态更新、变动,需要对应用进行分解。 将一个功能众多的应用分解为: 一个主应用外壳 + n个功能插件 (1)主应用外壳提供给用户安装,在使用时可... -
从零开始编译安卓系统源码(生成.img文件)以及安卓系统内核
2018-07-01 23:16:47最近开始接触安卓设备,了解到安卓系统开机界面以及定制桌面需要修改系统源码,这种情况下就需要重新编译系统源码得到.img镜像文件,本篇文章记录从零开始编译安卓系统源码以及安卓系统内核的一种方式。 1.配置系统... -
安卓怎么安卓Linux的tar包?
2015-08-22 06:05:49我看了一下安卓4.0的目录结构和linux是差不多的,我用终端模拟器进入,常见的linux命令都可以使用 ,用ssh root@ip:port 也能连接到linux的服务器。 我现在想给自己的安卓手机安装一些 linux软件,下载了一个tar包... -
安卓SDK设置问题,在创建安卓虚拟机的时候需要安卓4.2.2的系统镜像
2014-07-25 12:05:54安卓SDK设置问题,在创建安卓虚拟机的时候需要安卓4.2.2的系统镜像,我单独下载好了,请问如何放在android-17的文件夹里 -
DelphiXE10安卓开发(实战篇)
2019-06-30 17:59:51实战方式讲解DelphiXE10的安卓开发,从安卓开发开发环境配置开始讲解,实战讲解如何使用FMX进行安卓开发,App的创建,调试,UI设计、文件系统,处理数据,让学员快速掌握Delphi安卓App的开发
-
Solr8.7.0 Java Mysql Centos开发在线答题系统
-
微信APP支付验证签名失败
-
微信支付V3版微信小程序支付PYTHON版
-
ElasticSearch:Kibana查询结果与Java APi查询结果不一致
-
cnpm 安装
-
Neoway_N58_PCIe_Docs_20201223
-
基于Django的电子商务网站设计---第四章 模型和数据库
-
WEB安全渗透测试1-Msql基础
-
朗文3000基础词汇.txt
-
九齐8位单片机选型表.docx
-
全能电子地图下载器3.0(已破).rar
-
Scratch编程等级考试二级真题讲解(电子学会图形化编程)
-
OBS开发需要安装的软件.zip
-
程序设计也要懂点心理学
-
AI-人脸口罩识别特训营
-
数组Array,容易忽视的细节
-
Python零基础入门
-
Ubuntu 安装Qt及动态打包库使用
-
计算机网络基础
-
horovod>command>horovod的一些命令