Anyoffice -HTML5大赛 悦心(基于H5开发安卓音乐app)-项目总结
项目在线演示地址:http://rose111.applinzi.com/
github 地址:欢迎star https://github.com/midoxinxin/YueX-Music
悦心,一款音乐播放器应用。由“女立方”团队开发。眼下。较为流行的音乐播放器有QQ音乐、网易云音乐、多米音乐等。
“悦心”音乐播放器的主要功能,提供音乐数据库,点击列表播放音乐,还可对歌曲进行收藏。加入专属音乐心情功能。
1.歌曲播放过程中,气泡随音乐节奏动态变化。
2.点击圆盘。停止音乐播放
3.点击心形图标。收藏当前播放音乐。
4.音乐播放界面,点击评论图标。记录对当前播放音乐的专属音乐心情。
涉及到的技术点:
1.html5新特性:canvas。localstorage.
2.webaudio api
3.phoneGap(将H5打包成android)
开发记录
1.创建音频环境(context1 = new (window.AudioContext || window.webkitAudioContext)(); )
2.获取audio var audio =document.getElementById(“audio”);
3.在音频环境里创建源 并将音频发到音频源
var source = context1.createMediaElementSource(audio);
4.效果点 建立一个分析器analyserfa=context1.createAnalyser();
5.为音频选择一个目地。比如你的系统扬声器
6.连接源到效果器,以及效果器和目地(分析和可视化eg. AnalyserNode)
source.connect(analyserfa);
analyserfa.connect(context1.destination);
canvas方法调用
canvasFormAudio = document.getElementById('canvasFormAudio');
ctxfa = canvasFormAudio.getContext("2d");
for ( var i = 0; i < (array.length)/4; i++ ){
ctxfa.beginPath();
var o = Dots[i];
var r = array[i]/256*50;
ctxfa.arc(o.x, o.y, r, 0, Math.PI*2,true);
var g = ctxfa.createRadialGradient(o.x, o.y, 0, o.x, o.y, r);
//并用放射状/圆形渐变进行填充:
g.addColorStop(0,"#fff");
g.addColorStop(1, o.color);
ctxfa.fillStyle = g;
ctxfa.fill();
ctxfa.closePath();
}
我的职责:首页canvas,导航条。音频文件分析平可视化canvas。
遇到的问题:音频数据分析 webaudio无法在chrome浏览器获取音频数据: chrome浏览器兼容问题
context1 = new (window.AudioContext || window.webkitAudioContext)();
try {
context1 = new (window.AudioContext || window.webkitAudioContext)();
} catch(e) {
throw new Error('The Web Audio API is unavailable');
}
//画图函数
function drawSpectrumfa() {
var WIDTH = canvasFormAudio.width;
var HEIGHT= canvasFormAudio.height;
var array = new Uint8Array(128); //复制当前的频率值到一个无符号数组中
analyserfa.getByteFrequencyData(array);
ctxfa.clearRect(0, 0, WIDTH, HEIGHT);//clearRect(矩形左上角x坐标,矩形左上角y坐标。清除矩形的宽,清除矩形的高)
//循环生成圆点
for ( var i = 0; i < (array.length)/4; i++ ){
ctxfa.beginPath();
var o = Dots[i];
var r = array[i]/256*50;
ctxfa.arc(o.x, o.y, r, 0, Math.PI*2,true);
var g = ctxfa.createRadialGradient(o.x, o.y, 0, o.x, o.y, r);
//并用放射状/圆形渐变进行填充:
g.addColorStop(0,"#fff");
g.addColorStop(1, o.color);
ctxfa.fillStyle = g;
ctxfa.fill();
ctxfa.closePath();
}
//这里我们的array一共同拥有128组数据,所以我们当时canvas设置的宽度为5*128=640
//依据浏览器频率画图或者操作一些非css效果
requestAnimationFrame = window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame;
requestAnimationFrame(drawSpectrumfa);
}
//音频分析
function audioAnalayser(){
analyserfa=context1.createAnalyser();//建立一个分析器
var audio =jQuery("audio")[0];// 从audio标签获取声音源 source
var source = context1.createMediaElementSource(audio);
source.connect(analyserfa);
analyserfa.connect(context1.destination);
drawSpectrumfa();//调用画图函数
}
/********************************random**********************************/
function random(m,n){
return Math.round(Math.random()*(n-m) + m);
}
/********************************END**********************************/
/*******************球球窗体自适应*******************************/
function resize(){
height = canvasFormAudio.width;
width = canvasFormAudio.height;
ctxfa.height = height;
ctxfa.width = width;
getDots();
}
resize();
window.onresize = resize;
/*********************** 自适应END*****************************/
function getDots(){
Dots = [];
for(var i =0; i<size; i++){
var x = random(0,width);
var y = random(0,height);
var color = "rgba("+random(0,255)+"," + random(0,255)+","+random(0,255)+",0)";
Dots.push({
x: x,
y: y,
color: color
});
}
}
菜单
jQuery(document).ready(function($){
//open navigation clicking the menu icon
$('.cd-nav-trigger').on('click', function(event){
event.preventDefault();
toggleNav(true);
});
//close the navigation
$('.cd-close-nav, .cd-overlay').on('click', function(event){
event.preventDefault();
toggleNav(false);
});
function toggleNav(bool) {
$('.cd-nav-container, .cd-overlay').toggleClass('is-visible', bool);
$('main').toggleClass('scale-down', bool);
}
phoneGap 打包H5
Anyoffice -HTML5大赛 悦心(基于H5开发安卓音乐app)-项目总结的更多相关文章
- 基于Android开发的天气预报app(源码下载)
原文:基于Android开发的天气预报app(源码下载) 基于AndroidStudio环境开发的天气app -系统总体介绍:本天气app使用AndroidStudio这个IDE工具在Windows1 ...
- 基于BUI开发Asp.net MVC项目
因工作性质参于并开发过一些Web应用程序,前端项目框架也用了不少,比如MiniUI.ExtJS.以及定制的项目前端框架.无意中看到BUI前端框架,第一眼就被它的优雅布局所吸引.简洁的项目门户Banne ...
- H5开发移动应用APP(店铺系列一)
首先,这是个真实的案例,我大兄弟在深圳开汽修店铺,但需要系统来管理日常经营活动,这正不是我擅长的吗? 说干就干,直接后端+web端+移动端来一套,于是紧急赶工,起早摸黑,产出约3万行总量代码,此系统与 ...
- h5开发安卓软键盘遮挡解决方案
//处理input focus时被键盘遮挡问题 inputFocus:function(){ if(/Android [4-6]/.test(navigator.appVersion)) { wind ...
- h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法
前言: 从以前的项目中找一个问题的解决方案,顺带找到了这个安卓机型调起输入法,页面没有自动上滑导致输入框被弹起的键盘遮挡的解决方案.这个问题只有安卓机型页面中的输入框处于底部(也就是底部键盘区域)的时 ...
- 基于 React + Webpack 的音乐相册项目(下)
上一篇我们完成了音乐相册里面的播放图片的功能,这一篇主要完成的是音乐相册里面的音乐播放器功能.最终让我们基于 React 的音乐相册图文并茂.有声有色. 我们主要从以下几个部分来展开: 数据准备 进度 ...
- 基于 React + Webpack 的音乐相册项目(上)
笔记仓库:https://github.com/nnngu/LearningNotes 上一篇文章用爬虫自动下载了一些图片,这一篇就用这些图片做一个音乐相册吧! 效果预览 点击图片,切换到背面: 演示 ...
- 基于h5的图片无刷新上传(uploadifive)
基于h5的图片无刷新上传(uploadifive) uploadifive简介 了解uploadify之前,首先了解来一下什么是uploadify,uploadfy官网,uploadify和uploa ...
- 原生开发、H5开发、混合移动开发的优缺点
一.原生开发(Native App开发) 原生开发,是在Android.IOS等移动平台上利用官方提供的开发语言.开发类库.开发工具进行App开发.比如Android是利用Java.Eclipse.A ...
随机推荐
- API生命周期第二阶段——设计:如何设计API(基于swagger进行说明)
题外话 在新的项目中,推行了swagger用于对API的设计.以期待解决我们上篇博客中说到了一些现象,提升工作效率.那么,结合到当时和全项目组成员做培训,以及后续的给主要应用者做培训,以及当初自己接触 ...
- 骨牌覆盖问题总结!hihoCoder/ NYOJ-1273宣传墙1151
本想着做一下第九届河南省省赛题,结果被这个类似骨牌覆盖的题卡住了,队友然我去hihoCoder上老老实实把骨牌覆盖一.二.三做完,这题就没什么问题了.虽然很不情愿,但还是去见识了一下. 骨牌覆盖问题 ...
- iOS学习笔记38-MJExtension使用
一.MJExtension第三方框架 我们在iOS开发过程中,我们常常需要将字典数据(也就是JSON数据)与Model模型之间的转化,例如网络请求返回的微博数据.等等,如果我们自己全部手动去创建模型并 ...
- 3D标签
动态实现3D标签, 主要代码: // // XLMatrix.h // XLSphereView // // Created by 史晶晶 on 16/4/4. // Copyright © 2016 ...
- 《Programming in C》读书笔记
该书由美国Seephen G.Kochan著 贾洪峰译,电子工业出版社,来源是九江学院图书馆采购,现在藏于九江学院图书馆逸夫楼. 本书的主要内容: 第一章.基础知识 第二章.编译和运行第一个程序 第三 ...
- 15深入理解C指针之---内存释放
一.手动申请的内存,必须及时进行内存释放,否则容易造成内存泄露.主要代码形式为: #include <stdio.h> #include <stdlib.h> int main ...
- Echarts-之显示百分比
对于使用echarts要显示百分比,要改两个地方,第一个地方时坐标轴显示为百分比的格式,第二个是让值以百分比的形式显示,如50,在图上面显示为50%. yAxis: [ { type: 'value' ...
- (40)C#windows服务控制
ServiceController类 可以使用 ServiceController 类连接到现有服务并控制其行为. 构造函数 1.ServiceController () ServiceControl ...
- 【APIO2016】Gap
题目描述 有 $N$ 个严格递增的非负整数 $a_1, a_2, \dots, a_N$($0 \leq a_1 < a_2 < \cdots < a_N \leq 10^{18}$ ...
- Spring Boot中使用AOP记录请求日志
这周看别人写的springboot后端代码中有使用AOP记录请求日志,以前没接触过,因此学习下. 一.AOP简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编 ...