当前位置:  编程技术>移动开发
本页文章导读:
    ▪关于PIM的考虑        关于PIM的思考      一直在做PIM sync,对于OMA syncml的应用开发也浸淫了4年了,但是PIM的应用一直没跳出对于联系人,日程或者文件的同步备份的圈子,看看syncml的spec,DS 到了 2.0算是正式终.........
    ▪ 怎么判断一个点在任意四边形肉        如何判断一个点在任意四边形肉。   通过面积法,判断点P是否在四边形(A,B,C,D)内。    如果在四边形内则,  四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A)    反之不在四边形内.........
    ▪ Button 有按上效果 - 续       Button 有按下效果 - 续 上次讲过 如何使得Button有按下的效果 但是最后也提过 如果要求几个Button都有这种效果 分别为每一个Button定义一个 *.xml 是不方便的 今天就演示一下简便一点的做法    .........

[1]关于PIM的考虑
    来源: 互联网  发布时间: 2014-02-18
关于PIM的思考

     一直在做PIM sync,对于OMA syncml的应用开发也浸淫了4年了,但是PIM的应用一直没跳出对于联系人,日程或者文件的同步备份的圈子,看看syncml的spec,DS 到了 2.0算是正式终结并并入了DM的序列,设备管理也算涵盖了用户数据的管理。PIM能不能跳出sync这个用途,利用其特性做些其他的扩展应用呢? 答案是肯定的,只是目前国内市面上还没有类似的应用。

 

  1. 结合社交网站

     利用sns的API,例如facebook,twitter,kaixin001,人人网的api,将手机的数据同步到第三方的服务器上,达到共享用户手机数据的效果,这个实时性和流动性应该是传统的互联网应用达不到的。

类似的应用: Rseven ,它是一个很不错的在线手机备份服务。

  • 提供备份服务,备份的内容包括:通话记录/日志, 消息 (SMS, MMS & emails), 图片, 音频, 视频,并且以TimeLine的方式展示这些信息;
  • 提供同步服务:同步的内容包括:联系人和Calendar (appointments & to do items).
  • 可以讲Rseven备份内容还原到你的手机;
  • 支持对图片, 音频, 视频用Tag进行管理;
  • 可以对来电通话等进行录音并且同步到rseven,并且可以在rseven收听录音;
  • 可以统计你和联系人的联系频率,包括通话频率,短信等;
  • 可以将同不到rseven的内容分享到第三方网站,目前支持Facebook

   2.结合飞信

    这个从飞信加载联系人得到的启发,PIM sync真是做的联系人的同步,如果一个用户将自己的联系人同步到飞信的服务器上,这样,就可以从用户真实的联系人信息做文章,用户手机的联系人可以实时同步到飞信上。同时可以利用飞信的api,做一个短信的免费发送,类似google的voice的应用。

类似的应用:利用飞信API的网站很多,但是结合PIM sync的很少。

 

 

  3.结合email做push email

    现在运营商得到3G拍照后,叫嚣的都是争取终端支持,争取设备厂商的配合。在我看来,真正欠缺的是3G的杀手级应用。如果没有它,那么3G无非就是用浏览器看网页的速度快了而已,而到底什么是真正的杀手级应用呢?在欧美,答案已经出现了:push email。看看RIM 的blackberry就知道为啥看似如果简单的应用能造成如此成功的公司吧。目前的PIM 厂商要么只做联系人,日程,文件的同步,要么再加上一些RSS和变形的SNS,很难有太大的用户黏性,而如果把email的功能也加到PIM Sync服务器上,这就相当于利用用户真实的数据加上一项利器应用: email。

 

类似的应用:Funambol ,只要做过PIM的人应该都很熟悉这个开源项目,大名鼎鼎的sync4j 就是它的前身。

  • 提供联系人,日程的同步备份功能
  • 提供push email功能
  • 支持多种手机客户端,例如Android,symbian,mobile等

 

当然这些都是PIM的一些扩展应用,目前市面上PIM 同步移动包括apple mobileme、MS Myphone、Google Sync这些巨头们的产品以及国内的mytt、蜡笔、火种、无忧通讯录等也是类似,运营商的产品应用就是移动的号码薄管家和电信的PIM 备份。PIM应该算是3G应用的一项基础应用,但是如果基于这些用户的真实数据做扩展应用,也许就是孕育杀手应用的一个要素。

 

 

 

 

1 楼 shore1111 2010-02-01  
哈哈,LZ很有见地。
2 楼 chenpeilei2003 2010-06-28  
LZ想法不错, 我想如果PIM sync 能和汽车这样的移动工具结合起来, 或许也有市场

    
[2] 怎么判断一个点在任意四边形肉
    来源: 互联网  发布时间: 2014-02-18
如何判断一个点在任意四边形肉。

  通过面积法,判断点P是否在四边形(A,B,C,D)内。

   如果在四边形内则,  四边形的面积=面积(P,A,B)+面积(P,B,C)+面积(P,C,D)+面积(P,D,A)

   反之不在四边形内。

                     

public class Quadrangle 
{
	
	/**
	 * 点是否在四边形内
	 * @param a
	 * @param b
	 * @param c
	 * @param d
	 * @param p
	 * @return
	 */
	public static boolean pInQuadrangle(Point a, Point b, Point c,Point d,Point p)
	{
		Log.d("Walk Game","Quadrangle:"+
				 "new Point("+a.x+","+a.y+"),"+
				 "new Point("+b.x+","+b.y+"),"+
				 "new Point("+c.x+","+c.y+"),"+
				 "new Point("+d.x+","+d.y+"),"+
				 "new Point("+p.x+","+p.y+"),"
				);
		 
		 
		double dTriangle = triangleArea(a,b,p)+triangleArea(b,c,p)
					+triangleArea(c,d,p)+triangleArea(d,a,p);
		double dQuadrangle = triangleArea(a,b,c)+triangleArea(c,d,a);		
		return dTriangle==dQuadrangle;	
	}
	public static boolean pInQuadrangle(float[] px,float[] py,float x,float y)
	{
		Point a = new Point((int)px[0],(int)py[0]); 
		Point b = new Point((int)px[1],(int)py[1]); 
		Point c = new Point((int)px[2],(int)py[2]); 
		Point d = new Point((int)px[3],(int)py[3]); 
		Point p = new Point((int)x,(int)y); 
		Log.d("Walk Game","Quadrangle:"+
				 "new Point("+a.x+","+a.y+"),"+
				 "new Point("+b.x+","+b.y+"),"+
				 "new Point("+c.x+","+c.y+"),"+
				 "new Point("+d.x+","+d.y+"),"+
				 "new Point("+p.x+","+p.y+"),"
				);		 
		 
		double dTriangle = triangleArea(a,b,p)+triangleArea(b,c,p)
					+triangleArea(c,d,p)+triangleArea(d,a,p);
		double dQuadrangle = triangleArea(a,b,c)+triangleArea(c,d,a);		
		return dTriangle==dQuadrangle;	
	}
	
	// 返回三个点组成三角形的面积
	private static double triangleArea(Point a, Point b, Point c) 
	{
        double result = Math.abs((a.x * b.y + b.x * c.y + c.x * a.y - b.x * a.y
                - c.x * b.y - a.x * c.y) / 2.0D);
        return result;
    }
	
}

 

1 楼 稻-草 2010-01-30  
用射线发,  JDK中有源码,在Polygon.contains类中,可以判断任意凸多边形
2 楼 ansili 2010-02-01  
稻-草 写道
用射线发,  JDK中有源码,在Polygon.contains类中,可以判断任意凸多边形

  你是指PC平台的JDK吗?
如果是的话,之前我和你的想法一样,想把PC平台的Polygon移到android中.
那里面关系到很多类,我的技术太烂.粗略做了一下,没成功放弃了.
3 楼 稻-草 2010-02-01  
Polygon.contains 这个方法是完全可移植的,
因为我就是把这个方法考过来,稍微改改,就可用了,但是没看懂。

    
[3] Button 有按上效果 - 续
    来源: 互联网  发布时间: 2014-02-18
Button 有按下效果 - 续

上次讲过 如何使得Button有按下的效果 但是最后也提过 如果要求几个Button都有这种效果 分别为每一个Button定义一个 *.xml 是不方便的 今天就演示一下简便一点的做法

 

 

[代码 步骤]

1. 准备这2个ImageButton 所需的 *.ico 如:

写道
play.ico : ImageButton-play 的静态(未按下) 效果
play_down.ico : ImageButton-play 的按下 效果


pause.ico : ImageButton-pause的静态(未按下) 效果
pause_down.ico : ImageButton-pause的按下 效果

 

 

 

2. 构建有2个ImageButton 的布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ImageButton  
	android:id="@+id/play"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    />
<ImageButton  
	android:id="@+id/pause"
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    />
</LinearLayout>

 

 

 

3. 分别为View 定义名称 便于引用

public void initialView(){
    	play = (ImageButton) findViewById(R.id.play);
    	pause = (ImageButton) findViewById(R.id.pause);
    }

 

 

4. 为ImageButton play,pause 指定默认背景

public void specifyBackground(){
    	play.setBackgroundResource(R.drawable.play);
    	pause.setBackgroundResource(R.drawable.pause);
    }

 

 

5. 为ImageButton play,pause 注册 onTouch() 事件 并根据其ID 与 状态 指定具体的背景图

@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				switch(v.getId()){
				case R.id.play:
					if(event.getAction() == MotionEvent.ACTION_DOWN){
						v.setBackgroundResource(R.drawable.play_down);
					}
					else if(event.getAction() == MotionEvent.ACTION_UP){
						v.setBackgroundResource(R.drawable.play);
					}
					break;
				
				case R.id.pause:
					if(event.getAction() == MotionEvent.ACTION_DOWN){
						v.setBackgroundResource(R.drawable.pause_down);
					}
					else if(event.getAction() == MotionEvent.ACTION_UP){
						v.setBackgroundResource(R.drawable.pause);
					}
					break;
					
				
				}
				
				return false;
			}
        	
        };
        
        play.setOnTouchListener(listener);
        pause.setOnTouchListener(listener);

 

 

 

6. 所有程序为:

public class ButtonStyle3Usage extends Activity {
	ImageButton play,pause;
	
	OnTouchListener listener;
	
	/** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        initialView();

        specifyBackground();
        
        listener = new OnTouchListener(){
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				switch(v.getId()){
				case R.id.play:
					if(event.getAction() == MotionEvent.ACTION_DOWN){
						v.setBackgroundResource(R.drawable.play_down);
					}
					else if(event.getAction() == MotionEvent.ACTION_UP){
						v.setBackgroundResource(R.drawable.play);
					}
					break;
				
				case R.id.pause:
					if(event.getAction() == MotionEvent.ACTION_DOWN){
						v.setBackgroundResource(R.drawable.pause_down);
					}
					else if(event.getAction() == MotionEvent.ACTION_UP){
						v.setBackgroundResource(R.drawable.pause);
					}
					break;
					
				
				}
				
				return false;
			}
        	
        };
        
        play.setOnTouchListener(listener);
        pause.setOnTouchListener(listener);
    }
    
    
    public void initialView(){
    	play = (ImageButton) findViewById(R.id.play);
    	pause = (ImageButton) findViewById(R.id.pause);
    }
    
    public void specifyBackground(){
    	play.setBackgroundResource(R.drawable.play);
    	pause.setBackgroundResource(R.drawable.pause);
    }
}

 

 

7. emulator 运行截图: 静态

 


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