当前位置: 编程技术>移动开发
本页文章导读:
▪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"
最新技术文章: