当前位置:  编程技术>移动开发
本页文章导读:
    ▪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扫描二维码出现中文乱码的问题

最近项目的功能需要用到扫描二维码.就参考了google的开源项目ZXing..功能完成后..发现扫条形码没有问题..但是扫描二维码的时候却有一部分是乱码..或者不是中文的问题..于网上参考了很资料.但效果还是不太理想..后来发现只要以ISO-8859-1的格式来编码,取出结果再进行相应的转换..问题就解决了.并不需要修改源码:以下是修改的方法

第一:先在CaptureActivity类中设置它的默认编码

 

[java] view plaincopy
  • decodeFormats = null;  
  • characterSet = "ISO-8859-1";  

  • 第二:你在取回结果的Activity中转换相应的编码.这里我是在ResultActivity类里作处理的

    [java] view plaincopy
  • 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);  
  •     }  


  • 第三:以下就是判断是否在Unicode编码里

    [java] view plaincopy
  • 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的中文乱码问题.

        
    [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文件中添加自定义样式:
    <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"

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3