人脸识别 在线音乐,自己开发的一款不太成熟的安卓APP

【声明】
欢迎转载,但请保留文章原始出处

第一次写博客,大家见谅
先附上最后成品图,虽然有些功能不是很成熟

人脸识别

首先是人脸识别功能,人脸识别现在有很多公司做了这方面的功能供开发人员选择,我这里使用的是Face++公司的人脸识别技术,但是现在只能通过调用系统相机拍照后上传图片解析图片获取人脸信息,不能直接摄像头边预览直接获取人脸并解析。
这是Face++官网开发者中心,可以参考API文档
http://www.faceplusplus.com.cn/uc_home/
这是对人脸的解析的代码

    private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case PARSE_OK:JSONObject rs = (JSONObject) msg.obj;parseInfo(rs);Log.i("MyTest", "---age-->" + age + "-----gender--" + gender + "----smiling--" + smiling);emotionInfo.setVisibility(View.VISIBLE);find_btn_submit.setVisibility(View.GONE);emotionInfo.setText("检测结果如下:\n年龄:" + age + "\n性别:" + gender + "\n笑脸值:" + smiling);noCamera.clearAnimation();tips.clearAnimation();tips.setText("下拉开启音乐之旅");break;case PARSE_ERRO:handler.post(new Runnable() {@Overridepublic void run() {Toast.makeText(FindMusicActivity.this, "请检查网络连接", Toast.LENGTH_SHORT).show();tips.clearAnimation();tips.setText("当前网络状况出了点问题,检查一下再来吧~\n下拉随机推荐音乐");noCamera.clearAnimation();noCamera.setImageResource(R.mipmap.get_face_fail);}});break;}}};/*** 解析心情*/private void parseInfo(JSONObject obj) {try {JSONArray faces = obj.getJSONArray("face");int faceCounts = faces.length();if (faceCounts == 0) {Toast.makeText(FindMusicActivity.this, "不好意思,没有检测出来,请重新检测", Toast.LENGTH_SHORT).show();tips.clearAnimation();tips.setText("不好意思,没有检测出来,请长按重新检测");noCamera.clearAnimation();noCamera.setImageResource(R.mipmap.get_face_fail);smiling=50;} else {JSONObject face = faces.getJSONObject(0);String sex = face.getJSONObject("attribute").getJSONObject("gender").getString("value");gender = "Male".equals(sex) ? "男" : "女";age = face.getJSONObject("attribute").getJSONObject("age").getInt("value");smiling = face.getJSONObject("attribute").getJSONObject("smiling").getDouble("value");}} catch (JSONException e) {e.printStackTrace();}}

在线播放音乐

播放音乐这个问题让我头疼了好久,老是找不到接口,好多网上找的接口说着能用但是并不能解析出数据,最后,还是没有找到很好的接口,只能直接从网络上获取了70个歌曲链接存放在类中,然后根据地址从网络加载并播放音乐
歌曲链接获得方式:http://m.blog.csdn.net/blog/gikieng_tjsd/38750971
歌曲播放其实是我一个朋友写的,这个过程也是出现各种问题,特别是服务的问题,老是获取不到服务,要不就是服务注销不了,音乐不能停,到现在也不是很完善,这是个尚存的问题

其他功能

侧滑栏

侧滑栏使用的是安卓v4包的DrawLayout,DrawLayout的用法我应该不用说了,相信大家都知道,主要就是注意一点要声明它出现的位置,不然会报错

手势

里面用到了很多手势,上滑、下滑、长按等,可以用Gesture类来实现,我这里没有用这个,用的是View.OnTouchListener这个接口,然后在OnTouch()方法里面对手指在屏幕上的触摸做出判断,根据按下和抬起时不同的坐标和时间戳,判断出做出的是什么操作,不过这样判断不太精确,不建议使用

圆形进度条

这是个自定义的圆形进度条,是在网上找的参考的代码
大家可以参考一下

package com.sdf.DefineView;import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;import com.sdf.facemusic.R;/*** Created by Administrator on 15-11-5.*/
public class RoundProgressBar extends View
{// 画笔对象的引用private Paint paint;// 圆环的颜色private int roundColor;// 圆环进度的颜色private int roundProgressColor;// 中间进度百分比的字符串的颜色// private int textColor;// 中间进度百分比的字符串的字体// private float textSize;// 圆环的宽度private float roundWidth;// 最大进度private int max;// 当前进度private int progress;// 是否显示中间的进度//private boolean textIsDisplayable;// 进度的风格,实心或者空心private int style;public static final int STROKE = 0;public static final int FILL = 1;public RoundProgressBar(Context context) {this(context, null);}public RoundProgressBar(Context context, AttributeSet attrs) {this(context, attrs, 0);}public RoundProgressBar(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);paint = new Paint();TypedArray mTypedArray = context.obtainStyledAttributes(attrs, R.styleable.RoundProgressBar);// 获取自定义属性和默认值roundColor = mTypedArray.getColor(R.styleable.RoundProgressBar_roundColor, Color.WHITE);roundProgressColor = mTypedArray.getColor(R.styleable.RoundProgressBar_roundProgressColor, Color.GREEN);roundWidth = mTypedArray.getDimension(R.styleable.RoundProgressBar_roundWidth, 5);max = mTypedArray.getInteger(R.styleable.RoundProgressBar_max, 100);style = mTypedArray.getInt(R.styleable.RoundProgressBar_style, 0);//回收mTypedArraymTypedArray.recycle();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 画最外层的大圆环int centre = getWidth() / 2; // 获取圆心的x坐标int radius = (int) (centre - roundWidth / 2); // 圆环的半径paint.setColor(roundColor); // 设置圆环的颜色paint.setStyle(Paint.Style.STROKE); // 设置空心paint.setStrokeWidth(roundWidth); // 设置圆环的宽度paint.setAntiAlias(true); // 消除锯齿canvas.drawCircle(centre, centre, radius, paint); // 画出圆环// 画圆弧 ,画圆环的进度// 设置进度是实心还是空心paint.setStrokeWidth(roundWidth); // 设置圆环的宽度paint.setColor(roundProgressColor); // 设置进度的颜色RectF oval = new RectF(centre - radius, centre - radius, centre + radius, centre + radius); // 用于定义的圆弧的形状和大小的界限switch (style) {case STROKE: {paint.setStyle(Paint.Style.STROKE);canvas.drawArc(oval, 0, 360 * progress / max, false, paint); // 根据进度画圆弧break;}case FILL: {paint.setStyle(Paint.Style.FILL_AND_STROKE);if (progress != 0)canvas.drawArc(oval, 0, 360 * progress / max, true, paint); // 根据进度画圆弧break;}}}public synchronized int getMax() {return max;}/*** 设置进度的最大值** @param max*/public synchronized void setMax(int max) {if (max < 0) {throw new IllegalArgumentException("max not less than 0");}this.max = max;}/*** 获取进度.需要同步** @return*/public synchronized int getProgress() {return progress;}/*** 设置进度,此为线程安全控件,由于考虑多线的问题,需要同步 刷新界面调用postInvalidate()能在非UI线程刷新** @param progress*/public synchronized void setProgress(int progress) {if (progress < 0) {throw new IllegalArgumentException("progress not less than 0");}if (progress > max) {progress = max;}if (progress <= max) {this.progress = progress;postInvalidate();}}public int getCricleColor() {return roundColor;}public void setCricleColor(int cricleColor) {this.roundColor = cricleColor;}public int getCricleProgressColor() {return roundProgressColor;}public void setCricleProgressColor(int cricleProgressColor) {this.roundProgressColor = cricleProgressColor;}public float getRoundWidth() {return roundWidth;}public void setRoundWidth(float roundWidth) {this.roundWidth = roundWidth;}}

第三方登录和分享功能

第三方用的是ShareSDK,相信作为一个开发人员都用过。我在做这个项目的时候,因为是第一次用Android studio开发,所以不知道怎么添加,后来从网上找的一位朋友的,很详细的教程,大家可以参考
http://www.cnblogs.com/smyhvae/p/4585340.html

至此,项目大概功能就介绍完了,第一次写博客,可能写的比较乱,见谅

人脸识别 在线音乐,自己开发的一款不太成熟的安卓APP相关推荐

  1. 基于SSM的在线音乐网站开发与实现

    基于SSM的在线音乐网站开发与实现 本人的毕业设计,因为没有系统的学习过HTML和CSS,所以页面想不出什么设计元素,都是基于框架搭建而成的.前台页面为Bootstrap实现,后台页面为LayUI实现 ...

  2. 基于免费人脸识别的闸机开发及源码分享

    最近公司要开发一款人脸识别的闸机,就是在现有闸机上将一个小屏的识别装置,人脸识别成功后将闸机打开. 项目源码在 : https://gitee.com/panmingzhi/ArcSoftFace.g ...

  3. 第二章,人脸识别与管理系统界面开发(WinForm界面增强,OpenCV-Python智能识别)

     摘要:通过人脸识别与管理系统界面的开发(WinForm界面增强,OpenCV-Python智能识别),我将以一个用户登录窗体的两种不同登录验证方式向各位同学介绍如何利用WinForm开发出漂亮的应用 ...

  4. 人脸识别在线上金融业务中的应用风险

    2021年,广州互联网法院通报了一起因为"刷脸"引发的借款纠纷.客户王兰(化名)在遗失了身份证后,却被人冒用身份通过银行的"人脸识别"贷款,导致王兰因逾期被告上 ...

  5. 基于人脸识别的考勤系统开发

    在科学技术和经济快速发展的今天,企业规模不断扩大,考勤管理对企业的发展也变得相当重要.要更好地管理企业,一个简单.快速和有效的考勤系统必不可少的.基于实时图像处理的人脸识别是物联网技术应用的重要领域之 ...

  6. 七夜在线音乐台开发 第一弹 (原创)

    从今天起,我就要开始七夜在线音乐台的开发.七夜音乐台确定采用flask web框架,音乐源采用网易音乐(仅做技术演示,不做商业用途).项目从设施,设计,开发,部署,上线几个方面展示web开发的整个流程 ...

  7. 七夜在线音乐台开发 第二弹

    上一篇我讲了一下七夜在线音乐平台的服务器与域名,也就是设施部分.今天我将大体上的设计思路,技术要点,和大家分享一下. 项目需求:  我的目标是设计一个在线音乐平台,大家可以随时点播自己喜欢的歌曲,支持 ...

  8. opencv 全志_移植opencv人脸识别到全志A10开发板上 +linux3.0内核

    移植opencv人脸识别 libz:    zlib-1.2.3 libjpeg:   jpegsrc.v6b libpng:   libpng-1.2.18 libyasm:   yasm-0.7. ...

  9. 人脸识别技术开发解决方案,人脸识别智慧校园应用开发

    自2010年信息化"十二五"规划开始正式提出了"智慧校园"的建设愿景,智慧校园建设也成为了教育信息化2.0规划中的重要工作之一. 截至目前,智慧校园建设已经进行 ...

最新文章

  1. LVS +DR +keepalived高可用性web集群
  2. zz SOA推荐书籍列表
  3. 遗传算法入门到掌握(一)
  4. tebluea 仪表板如何联动_报告厅音响设备和辅助设备.doc
  5. 【CodeForces - 1102C 】Doors Breaking and Repairing (思维,简单博弈)
  6. python指定条件分类输出_python基础(二)条件判断、循环、格式化输出
  7. torch tensor去掉1维_南昌清污机新价格表1_海腾水工
  8. require.js引入css文件,[DikeJS]RequireJS引入CSS样式文件(五)
  9. JAVA设置流中当前位置_java文件流的问题!急
  10. ae导出gif插件_AE小白必看教程,围观AE老司机如何使用AE导出gif图片
  11. 九宫格 java_java输出九宫格的程序问题
  12. MyISAM如何查看哪个session持有表锁
  13. 小菜面试 String 篇 之 统计一个字符串中数字,字母,的个数
  14. loj #6013. 「网络流 24 题」负载平衡
  15. 牛腩新闻发布系统-概要介绍
  16. FreeBSD使用网易镜像来安装软件
  17. 如何将.sql文件导入数据库
  18. 想学plc但是没有计算机基础,没有电工基础可以学plc编程吗?能学懂PLC编程吗?...
  19. 小黄鸡 java_用java实现Simsimi小黄鸡接口
  20. python列表的增删查改,已经冒泡,选择,快速排序

热门文章

  1. html与浏览器有什么关系,360极速浏览器和chrome浏览器有什么关系和区别
  2. C语言实现地球自转参数更新
  3. 【定位导航科普篇】北斗卫星导航技术介绍
  4. python应用体系_python
  5. pythonjam怎么使用_PythonJam app下载-PythonJam安卓版 v1.6.1_5577安卓网
  6. 2021-2027全球与中国饲料传送设备市场现状及未来发展趋势
  7. idea打包war包,将自己的项目打包为war包
  8. 环形数组队列求滑动窗口最大值
  9. 单片机系统测试c语言程序,宏晶最新1T8051单片机内部EEPROM测试C语言程序
  10. AV转USB;S-Video转USB宏晶微视频采集卡方案