1.Gerrit使用 2012-08-29
1:git的一些相关资料,大家可以从\\192.168.80.90\dropbox\gittools 中获取。
2:Gerrit的测试环境为http://192.168.80.13:8080
另外之前写了一些git的shell脚本,请见\\192.168.80.90\dropbox\gittools\gitShell,此目录的脚本使用方法如下:
1:ga = git add
可以同时添加多个文件,例如:ga a.txt b.txt c.tx
2:gc = git commit--signedoff -m "xxxx"
提交命令,必须输入一个日志消息参数,例如:gc "log message"
3:glog = git log
显示日志命令,可以接收参数,参数为git log命令的参数,例如:glog --oneline -3
4:gu = git pull
代码更新命令,更新当前分支,例如:gu
5:gunrm = git checkout-- file
恢复删除的文件命令,例如:gunrm file
6:gt = git status
显示当前环境状态的信息,可以接收参数,参数为git status命令的参数,例如:gt --short
8:gp = git push originHEAD:refs/for/master
提交代码到Gerrit上,创建Gerrit中的评审任务
9:gmcf 与gccf 是处理Gerrit上冲突的脚本,使 用方法如下:
在Gerrit中提交产生冲突时,一般会由到类似如下内容的邮件
记下上图红色框中的内容,http://192.168.80.13:8080/125中的125即Gerrit中的代码评审任务ID,Gerrit-PatchSet: 1是指提交的补丁集编号,记录下这两个值。
先执行gmcf 脚本,传入两个参数,将产生冲突的版本合并到本地的master分支上面,为解决冲突做准备,
使用方法:gmcf ${Gerrit中评审任务的编号} ${评审任务中Gerrit-PatchSet的编号}
然后手工编辑文件,解决文件内容的冲突
最后执行gccf脚本,传入两个参数,使用方法:gccf ${Gerrit中评审任务的编号} ${评审任务中Gerrit-PatchSet的编号}
这个脚本将解决冲突的版本重新提交到Gerrit服务器上
2.FM feature总结 2012-08-10
1)旋钮功能技术小结
旋钮功能的实现花费较多时间,主要时间花在几何公式的修改上。
1.1)
Motionevent与view都有关于取得触摸点坐标的函数,以及其他相关一些函数。这些都比较容易混淆,下图是表明了它们的区别。
1.2)
手指触碰点,图片按钮中心,与系统描绘该图片按钮三者关系如下。
Fm主界面如下
图中红点就是图片按钮,为了使得在手指拖动该按钮时,其所在的位置指向的刻度就刚好是频道名称所示的刻度,必须处理好这三者的关系。
原则就是,图片按钮中点需要对准刻度尺,而不是图片按钮左上角对准刻度尺。同时保证红点只能在制定半径的圆周上运动。
首先必须将x、y,这个相对于屏幕左上角点,以及xx、yy,这个相对于图片左上角坐标经过运算,获取图片中点的坐标。
代码片段如下:
int x = (int) event.getRawX();
int y = (int) event.getRawY();
… …
xx = (int)event.getX();
yy = (int)event.getY();
… …
Point centerPoint = new Point(x - xx +v.getWidth() / 2,
y - yy + v.getHeight() / 2);
接着需要算出该制定半径是多少,该半径介于大小圆半径之间。
double l =Math.hypot((double)(centerPoint.x - CENTER_OF_RING_X),
(double)(centerPoint.y -CENTER_OF_RING_Y));
再接着通过以下判断手指触碰的点在允许范围内,以保证不能让红点超出罗盘范围。
checkIfPointerCanMove(centerPoint.x,centerPoint.y,l)
接着调用computeRealPointerLocate,根据centerPoint以及制定半径算出红点真实位置。
Point point = computeRealPointerLocate(centerPoint.x,centerPoint.y,l);
在根据该位置算出位置所在表示的频道。
该频道不能超过频道范围。
最后将将其layout出来,注意此时的红点左上角坐标。
4.关于wakelock 2012-8-24
持有wakelock按如下方法
用PowerManager的aquire是持有 然后release是释放。
Wakelock的作用是,当一个apk持有wakelock时,系统会在睡眠时将其杀掉。
5.前段时间的FM完善总结 2012-08-24
1)
使得状态栏显示应用的图标
例如,我想在FM的录音时,在状态栏显示录音的图标,可以在录音开始时使用如下代码。
notificationManager =(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = newNotification(R.drawable.recorder,
getResources().getText(R.string.status_recording),0);
Intent intent = new Intent(this,FMRadio.class);
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent contentIntent =PendingIntent.getActivity(this, 0, intent, 0);
notification.setLatestEventInfo(this,
getResources().getText(R.string.status_recording),
null, contentIntent);
notification.flags =Notification.FLAG_ONGOING_EVENT;
notificationManager.notify(0,notification);
在停止录音时,使用如下代码。
if(null != notificationManager)
notificationManager.cancel(0);
8.关于做feature
在做新feature时,应该详细将功能讨论好,再去执行。避免因为讨论不到位,导致功能理解不到位,从而浪费开发的精力。
开发feature过程中,出现问题,也应及时讨论。