当前位置:  编程技术>移动开发
本页文章导读:
    ▪java汉语言排序        java中文排序 import java.util.*; import java.text.*; public class SortByChinese { public static void main(String[] args) { // Collator 类是用来执行区分语言环境的 String 比较的,这里选择使用CHINA .........
    ▪ 判断用户透过手机访问wap还是电脑直接访问        判断用户通过手机访问wap还是电脑直接访问 首先说最根本的解决方法:手 机访问时,会附带发送user-agent信息,这个信息里面会有手机号码信息,那么如果能取得手机号码,则可以肯定是通.........
    ▪ 音,视频播发资源       音,视频播放资源 资源:Android MediaPlayer的生命周期http://syab11.iteye.com/blog/761660Android提高第二十一篇之MediaPlayer播放网络视频http://blog.csdn.net/hellogv/article/details/6429455一定要先弄明白状态图:http:.........

[1]java汉语言排序
    来源: 互联网  发布时间: 2014-02-18
java中文排序
import java.util.*; 
import java.text.*; 
  
public class SortByChinese {  
    
    public static void main(String[] args) {  
        // Collator 类是用来执行区分语言环境的 String 比较的,这里选择使用CHINA 
        Comparator cmp = Collator.getInstance(java.util.Locale.CHINA); 
        String[] arr = {"张三", "李四", "王五", "刘六"}; 
        // 使根据指定比较器产生的顺序对指定对象数组进行排序。 
        Arrays.sort(arr, cmp); 
        for (int i = 0; i < arr.length; i++)  
            System.out.println(arr[i]); 
        System.out.println(); 
    }  
}

 所谓中文排序就是按照汉语拼音的顺序进行排序,在Java中进行排序其实不需要自己来写算法,java.util.Arrays类中提供的sort方法可以直接实现这个功能。


    
[2] 判断用户透过手机访问wap还是电脑直接访问
    来源: 互联网  发布时间: 2014-02-18
判断用户通过手机访问wap还是电脑直接访问

首先说最根本的解决方法:
手 机访问时,会附带发送user-agent信息,这个信息里面会有手机号码信息,那么如果能取得手机号码,则可以肯定是通过手机wap访问的。但是目前中 国移动已经屏蔽了user-agent信息,所以获取不到手机号码。有关系的朋友可以联系移动公司,把wap网站服务器的ip提交给中国移动,加入白名单 后即可取得ua信息。目前中国联通可以直接取到手机号,对联通用户此方案可完美实施。
接下来说我的:
手机访问,原理是手机通过移动公司的代理服务器进行的访问。那么我们就可以理解是一台普通电脑使用了代理服务器。当手机通过代理服务器访问的时候,http头信息会毫无疑问的包含一个信息:via。这个信息提供了有价值的判断信息。
例如河南移动取得的via信息是:

http/1.1 hazz-b-gw001-wap(infox-wisg, huawei technologies)
河南联通的via信息是:

zxwap gateway,zte technologies
其他各省的http头信息和这个大同小异,判断是否手机访问的方案就出来 了:获取http的via信息字符串看是否包含wap字符,如果有则是通过手机访问。这样做的结果是没有人能伪造手机访问,判断绝对准确。自然,这样对于 网上流行的手机wap模拟器也做了屏蔽—-从根本上屏蔽。
操作代码也很简单:

// check if wap by xhat
function check_wap() {
return stristr($_SERVER['HTTP_VIA'],”wap”) ? true : false;
}
// check over
从我查阅的资料来看,目前此方法应该是迄今互联网上准确率最高、最简单的判断手机访问方法。

以上的方法可以实现判断访问来源是手机还是电脑,但有一个问题就是,只能通过手机才能访问,支持WAP的浏览器和手机模拟器也不能访问,这给测试带来了麻烦,也有点限制死了。
下面的方案是:
通过判断浏览器代理标识符,判断是否是支持WAP的浏览器来决定访问页面。这有一个缺点就是不可能全部的列出所有手机的浏览器标识符与所支持的浏览器标识符。
下面看看实现的代码:

function check_wap()
{
if (strpos(strtoupper($_SERVER['HTTP_ACCEPT']),”VND.WAP.WML”) > 0)
{
// Check whether the browser/gateway says it accepts WML.
$br = “WML”;
}
else
{
$browser=substr(trim($_SERVER['HTTP_USER_AGENT']),0,4);
if ($browser==”Noki” || // Nokia phones and emulators
$browser==”Eric” || // Ericsson WAP phones and emulators
$browser==”WapI” || // Ericsson WapIDE 2.0
$browser==”MC21″ || // Ericsson MC218
$browser==”AUR”  || // Ericsson R320
$browser==”R380″ || // Ericsson R380
$browser==”UP.B” || // UP.Browser
$browser==”WinW” || // WinWAP browser
$browser==”UPG1″ || // UP.SDK 4.0
$browser==”upsi” || // another kind of UP.Browser ??
$browser==”QWAP” || // unknown QWAPPER browser
$browser==”Jigs” || // unknown JigSaw browser
$browser==”Java” || // unknown Java based browser
$browser==”Alca” || // unknown Alcatel-BE3 browser (UP based?)
$browser==”MITS” || // unknown Mitsubishi browser
$browser==”MOT-” || // unknown browser (UP based?)
$browser==”My S” ||//  unknown Ericsson devkit browser ?
$browser==”WAPJ” || //  Virtual WAPJAG www.wapjag.de
$browser==”fetc” || //  fetchpage.cgi Perl script from www.wapcab.de
$browser==”ALAV” || //  yet another unknown UP based browser ?
$browser==”Wapa” || //  another unknown browser (Web based “Wapalyzer”?)
$browser==”Oper”) // Opera
{
$br = “WML”;
}
else
{
$br = “HTML”;
}
}

if($br == “WML”)
{
return TRUE;
}
else
{
return FALSE;
}
}
if(!check_wap())
{
Header(“Location: “);
exit();
}

1 楼 蓝沙 2011-11-14  
请问判断后要怎样更改页面跳转的路径呢?比如手机访问则路径以wap开头 电脑则以www开头?
2 楼 zld406504302 2012-02-10  
能否获取上行wap网关ip ,系统中会有个wap网关ip白名单,上行访问的时候去比对
3 楼 ml365 2012-02-14  
zld406504302 写道
能否获取上行wap网关ip ,系统中会有个wap网关ip白名单,上行访问的时候去比对

请问什么事上行wap网关ip 这个“上行”是什么意思呵呵
4 楼 zld406504302 2012-02-22  
系统要知道 终端上行访问wap页面是通过哪个网关ip 过来的,如果不在系统维护的ip内, 就提示错误页面,阻止访问

    
[3] 音,视频播发资源
    来源: 互联网  发布时间: 2014-02-18
音,视频播放资源
资源:
Android MediaPlayer的生命周期
http://syab11.iteye.com/blog/761660
Android提高第二十一篇之MediaPlayer播放网络视频
http://blog.csdn.net/hellogv/article/details/6429455



一定要先弄明白状态图:
http://book.51cto.com/art/200912/173820.htm
我说怎么总是感觉isPlaying()不太准确......晕

引用
3. 播放、暂停和停止

调用start()方法,MediaPlayer将进入到started状态。isPlaying()方法可以用来判断MediaPlayer是否处在started状态。当MediaPlayer从网络上播放多媒体文件时,可以通过onBufferingUpdateListener.onBufferingUpdate(MediaPlayer mp,int percent)来监听缓冲的进度,其中percent是0~100的整数,代表已经缓冲好的多媒体数据的百分比。

调用pause()方法,MediaPlayer将进入到paused状态。需要注意的是,从started到paused、从paused到started状态的转换是异步过程,也就是说,可能经过一段时间才能更新MediaPlayer的状态。在调用isPlaying()来查询播放器的状态时需要考虑这一点。

调用stop()方法,MediaPlayer将进入到stopped状态。一旦MediaPlayer进入stopped状态,必须再次调用prepare()或者prepareAsyn()才能使其进入到prepared状态,以便复用此MediaPlayer对象,再次播放多媒体文件。



http://blog.csdn.net/kesenhoo/article/details/6547726
MediaPlayer使用示例:
/**
 * 音频播放器
 * @author kay
 */
public class PlayActivity extends Activity 
{
	private static final String TAG = "PlayActivity";
    private EditText filenameText;
    private MediaPlayer mediaPlayer;
    private String filename;
    private int position;
    
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        filenameText = (EditText)this.findViewById(R.id.filename);
       
        //对mediaPlayer进行实例化
        mediaPlayer = new MediaPlayer();
        ButtonClickListener listener = new ButtonClickListener();
        //获取4个按钮
        Button playButton = (Button)this.findViewById(R.id.play);
        Button pauseButton = (Button)this.findViewById(R.id.pause);
        Button resetButton = (Button)this.findViewById(R.id.reset);
        Button stopButton = (Button) this.findViewById(R.id.stop);
        //设置4个按钮的监听
        playButton.setOnClickListener(listener);
        pauseButton.setOnClickListener(listener);
        resetButton.setOnClickListener(listener);
        stopButton.setOnClickListener(listener);
        Log.i(TAG, "onCreate()");
    }
    
    
    @Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) 
    {
		this.filename = savedInstanceState.getString("filename");
		this.position = savedInstanceState.getInt("position");
		super.onRestoreInstanceState(savedInstanceState);
		Log.i(TAG, "onRestoreInstanceState()");
	}
	@Override
	protected void onSaveInstanceState(Bundle outState) 
	{
		outState.putString("filename", filename);
		outState.putInt("position", position);
		super.onSaveInstanceState(outState);
		Log.i(TAG, "onSaveInstanceState()");
	}
	
	private void play() throws IOException 
	{
		//获取文件路径
		File audioFile = new File(Environment.getExternalStorageDirectory(),filename);
		mediaPlayer.reset();
		mediaPlayer.setDataSource(audioFile.getAbsolutePath());
		mediaPlayer.prepare();
		mediaPlayer.start();
	}
	
	//如果突然电话到来,停止播放音乐
	@Override
	protected void onPause() 
	{
		if(mediaPlayer.isPlaying())
		{
			//保存当前播放点
			position = mediaPlayer.getCurrentPosition();
			mediaPlayer.stop();
		}
		super.onPause();
	}
	
	//
	@Override
	protected void onResume() 
	{
		//如果电话结束,继续播放音乐
		if(position>0 && filename!=null)
		{
			try 
			{
				play();
				mediaPlayer.seekTo(position);
				position = 0;
			}
			catch (IOException e)
			{
				Log.e(TAG, e.toString());
			}
		}
		super.onResume();
	}
	
	//对mediaPlayer进行摧毁
	@Override
	protected void onDestroy() 
	{
    	mediaPlayer.release();     
		super.onDestroy();
		Log.i(TAG, "onDestroy()");
	}
	private final class ButtonClickListener implements View.OnClickListener
	{
		@Override
		public void onClick(View v) 
		{
			//先得到文本框中的内容
			filename = filenameText.getText().toString();
			//得到button
			Button button = (Button) v; 
			try 
			{
				//通过传过来的Buttonid可以判断Button的类型
				switch (v.getId()) 
				{
					case R.id.play:
						play();
						break;
	
					case R.id.pause:
						if(mediaPlayer.isPlaying())
						{
							mediaPlayer.pause();
							button.setText(R.string.continue1);//让这个按钮上的文字显示为继续
						}
						else
						{
							mediaPlayer.start();//继续播放
							button.setText(R.string.pause);
						}
						break;
						
					case R.id.reset:
						if(mediaPlayer.isPlaying())
						{
							mediaPlayer.seekTo(0);//让它从0开始播放
						}
						else
						{
							play();//如果它没有播放,就让它开始播放
						}
						break;
						
					case R.id.stop:
						//如果它正在播放的话,就让他停止
						if(mediaPlayer.isPlaying()) 
							mediaPlayer.stop();
						break;
				}
			} 
			catch (Exception e)
			{	
				Log.e(TAG, e.toString());
			}
		}		
    }	
}


其他资源:
1.http://blog.csdn.net/Android_Tutor/article/details/5743183
2.http://blog.csdn.net/Android_Tutor/article/details/5058217

    
最新技术文章:
▪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实现弹出键盘的方法
java开源软件 iis7站长之家
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3