当前位置:  编程技术>移动开发
本页文章导读:
    ▪java处置常规中文文本:给每行添加一些字符串        java处理常规中文文本:给每行添加一些字符串在任何语言中处理文件都是很重要的工作。昨天项目中碰到了一个问题:产品发来个doc文档,有300行文字。里面乱七八糟的。什么xml标记,unicode.........
    ▪ QVGA/HVGA/WVGA/FWVGA分辨率屏含意及大小        QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小QVGA格式:      240*320分辨率版本:一般用于小屏手机 像三星盖世Mini S5570就是使用这分辨率,目前有68款Android手机使用FWVGA。 HVGA格式:     320*480分辨率.........
    ▪ 蓝牙通讯-搜索附近的蓝牙设备       蓝牙通信-搜索附近的蓝牙设备 与其他设备通信通信之前需要搜索周围的蓝牙设备。 怎么搜索呢?? 1.如果数据中已经和某些蓝牙设备绑定,可以使用BluetoothAdapter.getBondedDevices();方法获得已.........

[1]java处置常规中文文本:给每行添加一些字符串
    来源: 互联网  发布时间: 2014-02-18
java处理常规中文文本:给每行添加一些字符串
在任何语言中处理文件都是很重要的工作。昨天项目中碰到了一个问题:产品发来个doc文档,有300行文字。里面乱七八糟的。什么xml标记,unicode字符都有。要求在项目中隔段时间随机显示一行。和同事讨论了下,单独做成个xml文件,给每行字符串按规律起一个名字,在android程序里就好处理了。处理基本过程如下:
1.先把文本从word考到Notepad里洗一下~.
2.在eclpse编辑器里使用正则表达式去掉无关的字符。什么tab、尖括号、下划线什么的都滚!
3.写个java程序一行行读文件,添加了<string name="xxx">content</string>之后,一行行写入另一个文件就ok了!


中间碰到了一个很恼人的问题。使用FileOutputStream和BufferedWriter配合,写到文件的一半了,突然程序结束了,我去!
于是百度发先,BufferedWriter写文件有长度限制。ok,我直接调用FileOutputStream的write方法,解决了此bug!

给出源码:

import java.io.*;

class addsomething
{  
	public static void main(  String[]  args  )  
	{  
	
		String fileName = "";
		System.out.println(  "int file name:"  )  ;
	
		
		InputStreamReader ir = null; 
		BufferedReader bf = null; 
		String lines = "";
		StringBuffer sb = new StringBuffer();
		OutputStreamWriter osw = null;
		BufferedWriter bw = null;
		try
        {
			ir = new InputStreamReader( System.in  )  ;
			bf = new BufferedReader(ir);
			String name = bf.readLine();
			System.out.println( "filename:" + name );
			ir = new InputStreamReader( new FileInputStream(name), "UTF-8" );
			bf = new BufferedReader(ir);
			System.out.println("sdfsadfsadf")	;
			int count = 0;
			osw = new OutputStreamWriter( new FileOutputStream(name + ".txt"),
					 "UTF-8");
			bw = new BufferedWriter(osw); // 有限制,不使用这个对象
			
			System.out.println( "  -0------------------------->");
			
                        // 一行行读文件,再写入,使用osw的write方法。而不是bw
			while( null != (lines = bf.readLine()) )
			{  
				System.out.println( lines );
				osw.write("<string name=\"proverb" + count + "\">"
						+ lines + "</string>\n" );
				count ++;
				System.out.println(  "  cout->"  + count );	
			}
			// writeString(name + ".txt", sb);
			ir.close();	
			bf.close();
			osw.close(  )  ;	
		} 
		catch( Exception ex )  
		{
			ex.printStackTrace(  );
			
		} 
	}

}



    
[2] QVGA/HVGA/WVGA/FWVGA分辨率屏含意及大小
    来源: 互联网  发布时间: 2014-02-18
QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小
QVGA格式:
     240*320分辨率版本:一般用于小屏手机 像三星盖世Mini S5570就是使用这分辨率,目前有68款Android手机使用FWVGA。
HVGA格式:
    320*480分辨率版本:像三星盖世Ace S5830就是使用这分辨率,目前有141款Android手机使用FWVGA。
WVGA格式:
   480*800分辨率版本:像三星i9000就是使用这分辨率,目前有168款Android手机使用FWVGA。
FWVGA格式:
   480*854分辨率,像摩托罗拉ME525(Defy)就是用这分辨率,目前有45款Android手机使用FWVGA。
QVGA即“QuarterVGA ”顾名思义就是说 VGA的4分之一尺寸。就是在液晶屏幕上输出的分辨率是240×320像素。需要说明的是有些媒体把QVGA屏幕当成与TFT和TFD等LCD材质相同的东西是错误的,QVGA屏幕的说法多见与日本的一些手机中,目前采用微软PPC操作系统的智能手机屏幕也大多是320×240像素的QVGA屏幕。   所谓QVGA液晶技术,就是在液晶屏幕上输出的分辨率是240×320的液晶输出方式。这个分辨率其实和屏幕本身的大小并没有关系。比如说,如果2.1英寸液晶显示屏幕可以显示240×320分辨率的图像,就叫做“QVGA 2.1英寸液晶显示屏”;如果3.8英寸液晶显示屏幕可以显示240×320的图像,就叫做“QVGA 3.8英寸液晶显示屏”,以上两种情况虽然具有相同的分辨率,但是由于尺寸的不同实际的视觉效果也不同,一般来说屏幕小的一个画面自然也会小一些。

HVGA    
    HVGA (Half-size VGA)即VGA(640*480)的一半,分辨率为(480*320),(3:2宽高比)   它是用于各种各样的PDA设备,黑莓手机谷歌手机也有HVGA的   iPhone也是HVGA设备。   全球第一款Google手机,T-Mobile G1配备有3.2英寸HVGA(320×480像素)分辨率的全触控式屏幕.

WVGA的定义
  WVGA,是数码产品屏幕分辨率的一种,比VGA分辨率高。WVGA的分辨率达到了800×480像素,VGA只有640×480像素
编辑本段WVGA简介
  WVGA别名:Wide VGA ,其分辩率为800×480象素。是扩大了VGA(640×480)的分辨率。应用于PDA和手机等,因为很多网页的宽度都是800,所以WVGA的屏幕会更加适合于浏览网页,可以说是未来手持设备的分辨率的大趋势。
FWVGA  FWVGA - Full Wide VGA  

数码产品屏幕材质的一种,VGA的另一种形式,比WVGA分辨率高,别名 : Full Wide VGA, ,其分辨   率为854×480象素(16:9)。是扩大了WVGA(800×480)的分辨率(15:9)。应用于PDA和Android手机等,专为手提设备浏览网页设计,是未来手持设备的分辨率的大趋势。   现在市面上应用FWVGA分辨率的手机有 摩托罗拉的Milestone、Milestone2、XT701、XT711、Droid X、Droid2、Shadow,MB520,ME525,诺基亚的N900,三星的M8910,LG的KM900、GC900,夏普9020c、0902c、9010c,索尼爱立信的X10i ,以及众多的PDA和手机。


启开一个新的Android专案后在res资料夹内会有
drawable-hdpi
drawable-mdpi
drawable-ldpi
三个目录,所定义的dpi皆不同
一般來說,ldpi是120,mdpi是160,hdpi是240,xhdpi的dip是320。

xhdpi是Android 2.2才开始增加的分类;xlarge是Android 2.3才开始增加的分类; tvdip 则是最近的事。
此外
drawable-hdpi 对应的解析度为 WVGA (480x800),FWVGA (480x854),是放高解析度的图片
drawable-mdpi 对应的解析度为 HVGA (320x480),是放中等解析度的图片
drawable-ldpi 对应的解析度为 QVGA (240x320),是放低解析度的图片

Android系统会根据机器的解析度来分辨鉴定对应到相关的资料夹找出对应的图片



       在最新的android的虚拟机里面出现了一些新宽屏的分辨率选项:WQVGA(400*240像素)、WSVGA(1024*600像素)、WXGA(1280*800或1280*768像素)、WXGA(1280*800像素) 。

       还有根据新的4.0以上的Google的Nexus系列手机分辨率:Nexus(800*1280像素)  ,以及Galaxy Nexus(720*1280像素)  ;



以下是一些常见的分辨率
标屏
分辨率
宽屏
分辨率
QVGA
320×240
WQVGA
400×240
VGA
640×480
WVGA
800×480
SVGA
800×600
WSVGA
1024×600
XGA
1024×768
WXGA
1280×768/1280×800/1280*960
SXGA
1280×1024
WXGA+
1440×900
SXGA+
1400×1050
WSXGA+
1680×1050
UXGA
1600×1200
WUXGA
1920×1200
QXGA
2048×1536
WQXGA
2560×1536

    
[3] 蓝牙通讯-搜索附近的蓝牙设备
    来源: 互联网  发布时间: 2014-02-18
蓝牙通信-搜索附近的蓝牙设备

 与其他设备通信通信之前需要搜索周围的蓝牙设备。

怎么搜索呢??

1.如果数据中已经和某些蓝牙设备绑定,可以使用BluetoothAdapter.getBondedDevices();方法获得已经绑定的蓝牙设备列表

2.搜索周围的蓝牙设备受用BluetoothAdapter.startDiscovery()方法

3.搜索到的蓝牙设备都是通过广播返回,so..。需要注册广播接收器来获得已经搜索到的蓝牙设备。

下面我们看一下demo:

我们在布局文件中放一个按钮和一个显示文本TextView。

我们点击Button时,开始搜索附近的蓝牙设备。将搜索到的蓝牙设备追加到TextView上,我们将绑定的和搜索到的都显示在TextView上。

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick_Search"
        android:text="搜索蓝牙设备" />

    <TextView
        android:id="@+id/tvDevices"
        android:layout_width="fill_parent"
        android:layout_below="@+id/button_id"
        android:layout_height="wrap_content" />

</RelativeLayout>



JAVA文件:

package com.example.search_bluetooth_devices;

import java.util.Set;

import android.os.Bundle;
import android.app.Activity;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.view.View;
import android.view.Window;
import android.widget.TextView;

public class MainActivity extends Activity {

	private TextView mTextView;
	private BluetoothAdapter mBluetoothAdapter;

	private BroadcastReceiver mReceiver = new BroadcastReceiver() {

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub

			String action = intent.getAction();
			// 获得已经搜索到的蓝牙设备
			if (action.equals(BluetoothDevice.ACTION_FOUND)) {
				BluetoothDevice device = intent
						.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
				// 搜索到的不是已经绑定的蓝牙设备
				if (device.getBondState() != BluetoothDevice.BOND_BONDED) {
					// 显示在TextView上
					mTextView.append(device.getName() + ":"
							+ device.getAddress()+"\n");
				}
				// 搜索完成
			} else if (action
					.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
				setProgressBarIndeterminateVisibility(false);
				setTitle("搜索蓝牙设备");
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

		setContentView(R.layout.activity_main);

		mTextView = (TextView) findViewById(R.id.tvDevices);

		mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
		// 获取所有已经绑定的蓝牙设备
		Set<BluetoothDevice> devices = mBluetoothAdapter.getBondedDevices();
		if (devices.size() > 0) {
			for (BluetoothDevice bluetoothDevice : devices) {
				mTextView.append(bluetoothDevice.getName() + ":"
						+ bluetoothDevice.getAddress() + "\n\n");
			}
		}
		// 注册用以接收到已搜索到的蓝牙设备的receiver
		IntentFilter mFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
		registerReceiver(mReceiver, mFilter);
		// 注册搜索完时的receiver
		mFilter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
		registerReceiver(mReceiver, mFilter);
	}

	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		//解除注册
		unregisterReceiver(mReceiver);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

	public void onClick_Search(View v) {
		setProgressBarIndeterminateVisibility(true);
		setTitle("正在扫描....");
		// 如果正在搜索,就先取消搜索
		if (mBluetoothAdapter.isDiscovering()) {
			mBluetoothAdapter.cancelDiscovery();
		}
		// 开始搜索蓝牙设备,搜索到的蓝牙设备通过广播返回
		mBluetoothAdapter.startDiscovery();
	}

}

配置文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.search_bluetooth_devices"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.search_bluetooth_devices.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

运行结果:

本机绑定的蓝牙设备一开始就显示(第一张图),点击搜索蓝牙设备后(第2张图)




    
最新技术文章:
▪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