当前位置: 编程技术>移动开发
本页文章导读:
▪ZXing扫描二维码出现中文乱码的有关问题 ZXing扫描二维码出现中文乱码的问题
最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者.........
▪ 手机于PC服务器通讯 手机于PC服务器通信
手机客户端
package com.newsocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.Output.........
▪ 怎么去掉状态栏和内容视图之间的黑色阴影线 如何去掉状态栏和内容视图之间的黑色阴影线
在values的styles文件中添加自定义样式:
<style name="MyApp.BaseTheme" parent="android:style/Theme.Light">
<item name="android:windowNoTitle">true</ite.........
[1]ZXing扫描二维码出现中文乱码的有关问题
来源: 互联网 发布时间: 2014-02-18
ZXing扫描二维码出现中文乱码的问题
decodeFormats = null;
characterSet = "ISO-8859-1";
public class ResultActivity extends Activity implements OnClickListener{
private TextView dec_result;
private String resultStr;
private ImageView codeImage;
private Button returnChoujiang,returnJubao;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.dec_result);
init();
dec_result=(TextView)findViewById(R.id.dec_result);
codeImage=(ImageView)findViewById(R.id.code_image);
Intent intent=getIntent();
resultStr=intent.getStringExtra("result");
String UTF_Str="";
String GB_Str="";
boolean is_cN=false;
try {
System.out.println("------------"+resultStr);
UTF_Str=new String(resultStr.getBytes("ISO-8859-1"),"UTF-8");
System.out.println("这是转了UTF-8的"+UTF_Str);
is_cN=IsChineseOrNot.isChineseCharacter(UTF_Str);
//防止有人特意使用乱码来生成二维码来判断的情况
boolean b=IsChineseOrNot.isSpecialCharacter(resultStr);
if(b){
is_cN=true;
}
System.out.println("是为:"+is_cN);
if(!is_cN){
GB_Str=new String(resultStr.getBytes("ISO-8859-1"),"GB2312");
System.out.println("这是转了GB2312的"+GB_Str);
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Bitmap bm=intent.getParcelableExtra("IMG_return");
if(is_cN){
dec_result.setText(UTF_Str);
}else{
dec_result.setText(GB_Str);
}
codeImage.setImageBitmap(bm);
returnChoujiang.setOnClickListener(this);
returnJubao.setOnClickListener(this);
}
public class IsChineseOrNot {
public static final boolean isChineseCharacter(String chineseStr) {
char[] charArray = chineseStr.toCharArray();
for (int i = 0; i < charArray.length; i++) {
//是否是Unicode编码,除了"�"这个字符.这个字符要另外处理
if ((charArray[i] >= '\u0000' && charArray[i] < '\uFFFD')||((charArray[i] > '\uFFFD' && charArray[i] < '\uFFFF'))) {
continue;
}
else{
return false;
}
}
return true;
}
public static final boolean isSpecialCharacter(String str){
//是"�"这个特殊字符的乱码情况
if(str.contains("�")){
return true;
}
return false;
}
}
最后这样就解决了ZXing的中文乱码问题.
最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者不是中文的问题..于网上参考了很资料.但效果还是不太理想..后来发现只要以ISO-8859-1的格式来编码,取出结果再进行相应的转换..问题就解决了.并不需要修改源码:以下是修改的方法
第一:先在CaptureActivity类中设置它的默认编码
[java] view plaincopy
第二:你在取回结果的Activity中转换相应的编码.这里我是在ResultActivity类里作处理的
[java] view plaincopy
第三:以下就是判断是否在Unicode编码里
[java] view plaincopy
最后这样就解决了ZXing的中文乱码问题.
[2] 手机于PC服务器通讯
来源: 互联网 发布时间: 2014-02-18
手机于PC服务器通信
手机客户端
package com.newsocket;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.*;
public class Activity01 extends Activity {
private final String DEBUG_TAG = "Activity01";
private TextView mTextView = null;
private EditText mEditText = null;
private EditText mima = null;
private Button mButton = null;
private DataOutputStream toserver;
private DataInputStream fromserver;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mButton = (Button) this.findViewById(R.id.button1);
mButton.setText("登录");
mTextView = (TextView) this.findViewById(R.id.textView1);
mEditText = (EditText) this.findViewById(R.id.editText1);
mima =(EditText) this.findViewById(R.id.editText2);
mButton.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v) {
Socket socket = null;
String ms = mEditText.getText().toString();
String message = mima.getText().toString()+"\r\n";
try{
socket = new Socket("192.168.1.100",54321);
//接受服务器的数据流
fromserver = new DataInputStream( socket.getInputStream());
//要发送的数据流
toserver=new DataOutputStream(socket.getOutputStream());
toserver.writeBytes(message);
toserver.flush();
String msg = fromserver.readLine();
if(msg != null)
{ if(msg.equals(ms))
mTextView.setText("登录成功");
else
mTextView.setText("密码错误");
}else
{
mTextView.setText("数据错误");
}
toserver.close();
fromserver.close();
socket.close();
}catch(Exception e){
mTextView.setText("没连接上");
}
}
});
}
}
pc服务器端
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class AndroidServer implements Runnable{
@Override
public void run() {
try{
ServerSocket serverSocket = new ServerSocket(54321);
while(true){
System.out.println("Android socket 等待接受客户的连接");
Socket client = serverSocket.accept();//接受客户端请求
try{
BufferedReader in = new BufferedReader
(new InputStreamReader(client.getInputStream()));
String str = in.readLine();
System.out.println("read:"+str);
PrintWriter out = new PrintWriter
(new BufferedWriter(new OutputStreamWriter(client.getOutputStream())),true
);
out.println(str);
in.close();
out.close();
}catch(Exception e){
System.out.println(e.getMessage());
e.printStackTrace();
}
finally{
client.close();
System.out.println("Android socket close");
}
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
public static void main(String[] srgs){
Thread desktopServerThread = new Thread(new AndroidServer());
desktopServerThread.start();
}
}
[3] 怎么去掉状态栏和内容视图之间的黑色阴影线
来源: 互联网 发布时间: 2014-02-18
如何去掉状态栏和内容视图之间的黑色阴影线
在values的styles文件中添加自定义样式:
如果要应用在本应用的所有activity上面,在manifest文件的application节点中添加属性android:theme="@style/MyApp.BaseTheme"
如果只要应用在某个activity上面,在manifest文件的对应的activity中添加 android:theme="@style/MyApp.BaseTheme"
在values的styles文件中添加自定义样式:
<style name="MyApp.BaseTheme" parent="android:style/Theme.Light">
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
</style>
如果要应用在本应用的所有activity上面,在manifest文件的application节点中添加属性android:theme="@style/MyApp.BaseTheme"
如果只要应用在某个activity上面,在manifest文件的对应的activity中添加 android:theme="@style/MyApp.BaseTheme"
最新技术文章: