三星I879怎么卡刷?I879刷机教程详解
在android开发过程中,APP需要用到摄像头录制视频音效、播放视频的功能,并且通过第三方线程调用Handler动态的addview和removeview添加和删除播放视频的组件——MediaPlayer。
一、产生异常原因
每次在点播放按钮的时候,打开MediaPlayer的SurfaceView进行播放,再次点击则删除波翻组件,停止播放,这个过程中会遇到The surface has been released 错误,这个的原因是因为:在播放this.mediaPlayer.start()之前SurfaceView没有来的及调用onCreate()或者onChange()方法,导致holder没有成功加载,所以在start播放的时候抛出播放异常。
二、解决办法
很简单的办法就是:
1.设置一个boolean标志位isSurfaveCreated,在执行onCreate()或者onChange()之后,将isSurfaveCreated=true。
2.在停止播放之后isSurfaveCreated=false。
3.在MediaPlayer.setDisplay()之前使用while循环以及Thread.sleep(10)来循环检测isSurfaveCreated,只有isSurfaveCreated为true的时候,才继续执行,具体代码为:
代码如下 | 复制代码 |
while (! this.isSurfaveCreated) { try { Thread.sleep(10); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } |
当然,这个办法自己感觉是一个非主流的办法,但是确实可以很好的避免这个问题,除此之外,大家自己考虑代码的安全稳定性等等因素,Enjoy~
本文明来给各位同学介绍一下关于cordova cteate app 时下载失败无法成功创建的解决方法,有碰到此问题的同学可进入参考。使用如下语句创建一个cordova应用:
代码如下 | 复制代码 |
cordova -d create lzwmeapp com.lzw.lzwmeapp lzwmeapp |
但是无法成功创建,提示错误如下:
代码如下 | 复制代码 |
E:lzwme_app_android>cordova -d create lzwmeapp Creating a new cordova project with name “HelloCordova” and id “io.cordova.hello cordova” at location “E:lzwme_app_androidlzwmeapp” Using stock cordova hello-world application. Requesting {“uri”:”https://git-wip-us.apache.org/repos/asf?p=cordova-app-hello-w orld.git;a=snapshot;h=3.4.0;sf=tgz”}… Downloading cordova library for www… Error: connect ETIMEDOUT at errnoException (net.js:904:11) at Object.afterConnect [as oncomplete] (net.js:895:19) |
明显这是下载 cordova hello world 文件失败。主要原因为网址 https://git-wip-us.apache.org/ 速度太慢,容易超时。
解决方法:
我们可以变更这个文件的下载地址,方法如下:
打开 cordova 目录下的platforms.js文件,修改其中的url配置地址。这里可以修改为git附件包下载地址,具体到官方github查找:
https://github.com/apache/
如这里主要修改了如下部分代码:
代码如下 | 复制代码 |
‘android’ : { parser : ‘./src/metadata/android_parser’, //url : ‘https://git-wip-us.apache.org/repos/asf?p=cordova-android.git’, url : ‘https://github.com/apache/cordova-android/archive/3.4.0.tar.gz?’, version: ’3.4.0′ }, ‘www’:{ hostos : [], //url : ‘https://git-wip-us.apache.org/repos/asf?p=cordova-app-hello-world.git’, url : ‘https://github.com/apache/cordova-app-hello-world/archive/3.4.0.tar.gz?’, version: ’3.4.0′ } |
其他部分的url也可参照修改。
当然,你也可以手动下载对应的压缩包,放到本地服务器,然后修改为相应文件的下载地址。
简介
商品条码,或者EAN是欧洲标准条码。该条码被作为商品和商品制造商的唯一标识,同时,是美国标准UPC的超集。EAN-13由前十二位数字和第十三位作为校验位的数字组成。其中第十三位数字由前十二位数字按照一定公式计算得出。
如今,各个领域都有条码的应用。如果你以写代码为生,你的程序需要支持条码是早晚的事儿。比如超市的会员打折系统,用户以手机获取的条码作为唯一标识,来获得折扣。又比如支付系统中的星巴克支付系统。本文中,我们将讨论如何在安卓系统中生成EAN-13条码。
EAN-13计算基础
EAN-13采用的是是各位商品码,第十三位作为校验位。该校验位有前十二位数字生成。生成校验位的算法如下(数据从左到右计数):
P1 = 偶数位的数字和
P2 = 奇数位的数字和
Z = P1 + 3 * P2
R = 取个位数作为Z值
校验位 = R - Z
下面我们看一下EAN-13的编码结构:
首位不参与计算
随后六位根据首位数字编码
末六位以下列规则转换
首位 左六位 右六位
0 LLLLLL RRRRRR
1 LLGLGG RRRRRR
2 LLGGLG RRRRRR
3 LLGGGL RRRRRR
4 LGLLGG RRRRRR
5 LGGLLG RRRRRR
6 LGGGLL RRRRRR
7 LGLGLG RRRRRR
8 LGLGGL RRRRRR
9 LGGLGL RRRRRR
位编码:
Digit L - code G - code R - code
0 0001101 0100111 1110010
1 0011001 0110011 1100110
2 0010011 0011011 1101100
3 0111101 0100001 1000010
4 0100011 0011101 1011100
5 0110001 0111001 1001110
6 0101111 0000101 1010000
7 0111011 0010001 1000100
8 0110111 0001001 1001000
9 0001011 0010111 1110100
应用
文章尾部,我贴出了一个用十二位数字生成EAN-13条码的类EAN13CodeBuilder。这个类可以把生成的十三位数字的每一位都替换为可以展示到屏幕的特殊字体。该字体包括了一些特殊字符,比如$,+,!和其如上所述的十个数字的编码L,R,G。在EAN-13条码必须以以下方式生成:起始界定符(取决于第一位数字)-左六位-中间分隔符-右六位-终止符(!)
Digit L - code G - code R -code Start delimiter
0 0 A a #!
1 1 B b $!
2 2 C c %!
3 3 D d &!
4 4 E e '!
5 5 F f (!
6 6 G g )!
7 7 H h *!
8 8 I i +!
9 9 J j ,!
我们需要做的,仅仅是用数字生成正确的字符串,并用特殊字体展示而已。
这个类的使用非常简单。它将原始字符串传递给构造函数,之后调用getcode()方法取回EAN-13条码。这个类的源代码如下:
代码如下 | 复制代码 |
public class EAN13CodeBuilder { private String codeStringValue; private String generatedCode; public EAN13CodeBuilder(String codeString) { codeStringValue = codeString; parse(); } public String getCode() { return generatedCode; } //////////////////////////////////////////////////////////////// // this method generates EAN 13 control number ans returns full // string to encode private String getFullCode() { int chetVal = 0, nechetVal = 0; String codeToParse = codeStringValue; for( int index = 0;index<6;index++ ) { chetVal += Integer.valueOf(codeToParse.substring( index*2+1,index*2+2)).intValue(); nechetVal += Integer.valueOf(codeToParse.substring( index*2,index*2+1)).intValue(); } chetVal *= 3; int controlNumber = 10 - (chetVal+nechetVal)%10; if( controlNumber == 10 ) controlNumber = 0; codeToParse += String.valueOf(controlNumber); return codeToParse; } private String DigitToUpperCase( String digit) { String letters = "ABCDEFGHIJ"; int position = Integer.valueOf(digit).intValue(); String retVal = letters.substring(position,position+1); return retVal; } private String DigitToLowerCase( String digit) { String letters = "abcdefghij"; int position = Integer.valueOf(digit).intValue(); String retVal = letters.substring(position,position+1); return retVal; } ////////////////////////////////////////////// // this method generates EAN 13 encoded string // algorithm can be found at http://en.wikipedia.org/wiki/EAN-13 private String createEAN13Code(String rawCode) { int firstFlag = Integer.valueOf( rawCode.substring(0,1) ).intValue(); String leftString = rawCode.substring(1,7); String rightString = rawCode.substring(7); String rightCode = ""; String leftCode = ""; for( int i=0;i<6;i++) { rightCode += DigitToLowerCase( rightString.substring(i,i+1) ); } if( firstFlag == 0 ) { leftCode = "#!"+leftString.substring(0,1) +leftString.substring(1,2) +leftString.substring(2,3) +leftString.substring(3,4) +leftString.substring(4,5) +leftString.substring(5); } if( firstFlag == 1 ) { leftCode = "$!"+leftString.substring(0,1) +leftString.substring(1,2) +DigitToUpperCase(leftString.substring(2,3)) +leftString.substring(3,4) +DigitToUpperCase(leftString.substring(4,5)) +DigitToUpperCase(leftString.substring(5)); } if( firstFlag == 2 ) { leftCode = "%!"+leftString.substring(0,1) +leftString.substring(1,2) +DigitToUpperCase(leftString.substring(2,3)) +DigitToUpperCase(leftString.substring(3,4)) +leftString.substring(4,5) +DigitToUpperCase(leftString.substring(5)); } if( firstFlag == 3 ) { leftCode = "&!"+leftString.substring(0,1) +leftString.substring(1,2) +DigitToUpperCase(leftString.substring(2,3)) +DigitToUpperCase(leftString.substring(3,4)) +DigitToUpperCase(leftString.substring(4,5)) +leftString.substring(5); } if( firstFlag == 4 ) { leftCode = "'!"+leftString.substring(0,1) +DigitToUpperCase(leftString.substring(1,2)) +leftString.substring(2,3) +leftString.substring(3,4) +DigitToUpperCase(leftString.substring(4,5)) +DigitToUpperCase(leftString.substring(5)); } if( firstFlag == 5 ) { leftCode = "(!"+leftString.substring(0,1) +DigitToUpperCase(leftString.substring(1,2)) +DigitToUpperCase(leftString.substring(2,3)) +leftString.substring(3,4) +leftString.substring(4,5) +DigitToUpperCase(leftString.substring(5)); } if( firstFlag == 6 ) { leftCode = ")!"+leftString.substring(0,1) +DigitToUpperCase(leftString.substring(1,2)) +DigitToUpperCase(leftString.substring(2,3)) +DigitToUpperCase(leftString.substring(3,4)) +leftString.substring(4,5) +leftString.substring(5); } if( firstFlag == 7 ) { leftCode = "*!"+leftString.substring(0,1) +DigitToUpperCase(leftString.substring(1,2)) +leftString.substring(2,3) +DigitToUpperCase(leftString.substring(3,4)) +leftString.substring(4,5) +DigitToUpperCase(leftString.substring(5)); } if( firstFlag == 8 ) { leftCode = "+!"+leftString.substring(0,1) +DigitToUpperCase(leftString.substring(1,2)) +leftString.substring(2,3) +DigitToUpperCase(leftString.substring(3,4)) +DigitToUpperCase(leftString.substring(4,5)) +leftString.substring(5); } if( firstFlag == 9 ) { leftCode = ",!"+leftString.substring(0,1) +DigitToUpperCase(leftString.substring(1,2)) +DigitToUpperCase(leftString.substring(2,3)) +leftString.substring(3,4) +DigitToUpperCase(leftString.substring(4,5)) +leftString.substring(5); } String retVal = leftCode + "-" + rightCode + "!"; return retVal; } private void parse() { String fullString = getFullCode(); System.out.println( "Full code: " + fullString ); generatedCode = createEAN13Code(fullString); System.out.println( "Generated code: " + generatedCode ); } } |
代码
为了生成一个在线条码,并将它展示到安卓屏幕上,你可能需要自己生成条码并用其中的特殊字符展示到屏幕上。为了在安卓系统的TextView 部件中设置字符集,你需要在工程文件的 /assets 下放置一个文件,加载Typeface 并且设置Typeface 到TextView 中:
代码如下 | 复制代码 |
import android.app.Activity; |
例子
代码如下 | 复制代码 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <HorizontalScrollView <TextView <TableLayout <TableRow <Button <Button <Button <Button <Button <TableRow <Button <Button <Button <Button <Button <LinearLayout <TableLayout <TableRow <Button <Button <Button <TableRow <Button <Button <Button <Button <LinearLayout <Button <Button </LinearLayout> |
MainActivity类和之前的java计算器差不多:
代码如下 | 复制代码 |
package me.jerrys.calc; import java.math.BigDecimal; import android.support.v7.app.ActionBarActivity; public class MainActivity extends ActionBarActivity { @Override public void onClickListener(View v) { public void addNumber(String num) { |
相关文章
- 今天小编在这里就来给Painter的这一款软件的使用者们来说一说绘制红衣喝酒男水粉画效果的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
iPhone6怎么激活?两种苹果iPhone6激活教程图文详解
iPhone6新机需要激活后才可以正常使用,那么对于小白用户来说,iPhone6如何激活使用呢?针对此问题,本文就为大家分别介绍Wifi无线网络激活以及iPhone6连接电脑激活这两种有效的方法,希望本文能够帮助到大家...2022-09-14- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来说下制作雨中野外孤独行走的一头牛海报的教程,各位想知道具体制作方法的使用者们,大家就快来看一看小编给...2016-09-14
- 今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制帅气卡通魔法王子漫画的具体教程,各位想知道绘制步骤的使用者,那么下面就快来跟着小编一起看一看教程...2016-09-14
- 今天小编在这里就来给各位Illustrator的这一款软件的使用者们来说说鼠绘堆雪人的孩童矢量插画的教程,各位想知道具体绘制方法的使用者们,那么各位就快来跟着小编来看看...2016-09-14
- 支付宝支付在国内算是大家了,我们到处都可以使用支付宝了,下文整理介绍的是在安卓app应用中使用支付宝进行支付的开发例子。 之前讲了一篇博客关与支付宝集成获取...2016-09-20
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下究竟该怎么给照片天空加蓝天白云的教程,各位想知道具体制作步骤的,那么下面就来跟着小编一起看看吧。 ...2016-09-14
- 今天小编在这里就来给llustrator的这一款软件的使用者们来说一说绘制扁平化风格卡通警察护士空姐肖像的教程,各位想知道具体绘制步骤的使用者们,那么下面就快来跟着小编...2016-09-14
- 今天小编在这里就来给Illustrator的这一款软件的使用者们来说一下绘制一个方形的录音机图标的教程,各位想知道具体绘制方法的使用者们,那么下面就来看一下小编给大家分...2016-09-14
- 今天小编在这里就来给photoshop的这一款软件的使用者们来说一说简单制作一个搞笑的换脸表情包的教程,各位想知道具体制作方法的使用者们,那么大家就快来看一看教程吧。...2016-09-14
- 今天小编在这里就来给各位photoshop的这一款软件的使用者们来说说给手绘画调色变换场景的后期教程,各位想知道具体后期处理步骤的使用者们,那么大家就快来跟着小编来看...2016-10-02
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说一下让你胸丰满起来的处理教程,各位想知道具体处理步骤的,那么下面就快来跟着小编一起看一下教程吧。 给...2016-09-14
- 今天小编在这里就来给Painter的这一款软件的使用者们来说一下绘制雷神传插画的教程,各位想知道具体绘制步骤的使用者,那么下面就快来跟着小编一起看看绘制方法吧。 ...2016-09-14
- 今天小编在这里就来给美图秀秀的这一款软件的使用者们来说下制作隔离区聊天背景的教程,各位想知道具体方法的,那么下面就快来跟着小编一起看一看吧。 给各位美图秀...2016-09-14
- 联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c). 可以支持a | a,b| a,b,c 3种组合进行查找,但不支持 b,c进...2015-11-24
- 这篇文章主要给大家介绍的是关于Lua语言新手入门的简单教程,文中通过示例代码一步步介绍的非常详细,对各位新手们的入门提供了一个很方便的教程,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。...2020-06-30
- 一、下载 mysqlsla [root@localhost tmp]# wget http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz--19:45:45-- http://hackmysql.com/scripts/mysqlsla-2.03.tar.gzResolving hackmysql.com... 64.13.232.157Conn...2015-11-24
- 这篇文章主要介绍了golang 调用 php7详解及实例的相关资料,需要的朋友可以参考下...2017-01-15
- 今天小编在这里就来给photoshop的这一款软件的使用者们来说说用素材合成古典园林场景教程,各位想知道到底该怎么制作的,那么就快来一起看一下吧。 给各位photoshop...2016-09-14
- php类的使用实例教程 <?php /** * Class program for yinghua05-2 * designer :songsong */ class Template { var $tpl_vars; var $tpl_path; var $_deb...2016-11-25