当前位置:  编程技术>移动开发
本页文章导读:
    ▪替freescale MX28添加新包        为freescale MX28添加新包 1.创建项目 $ mkdir hello-1.0 $ cd hello-1.0 $ vi hello.c   #include <stdio.h> int main() { int i; printf("hello world\n"); for ( i = 0; i < 10 ; i++ ) { printf("loop c.........
    ▪ Intent跟PendingIntent的关系        Intent和PendingIntent的关系 Intent和PendingIntent的关系,初学的时候很迷惑,用PendingIntent的时候,还会出现奇怪的问题,比如无法传递数据,无法更新数据,所以我集众家之长,加上我个人的一.........
    ▪ 替freescale MX28包设置自动启动       为freescale MX28包设置自动启动 1. 首先制作init.d脚本,如: $ vi dist/lfs-5.1/remserial/remserial.spec    cat << EOF > $RPM_BUILD_ROOT/%{pfx}/etc/rc.d/init.d/remserial #!/bin/sh if [ ! -x /sbin/remserial ] then exit 0 .........

[1]替freescale MX28添加新包
    来源: 互联网  发布时间: 2014-02-18
为freescale MX28添加新包
1.创建项目

$ mkdir hello-1.0

$ cd hello-1.0

$ vi hello.c

 

#include <stdio.h>
int main()
{
        int i;
        printf("hello world\n");
        for ( i = 0; i < 10 ; i++ ) {
                printf("loop count = %d\n", i);
        }
        printf("hello this is the end\n");
        return 0;
}

 

$ vi Makefile

EXEC = hello
OBJS = hello.o
all: $(EXEC)
$(EXEC): $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS$(LDLIBS_$@))
romfs:
        $(ROMFSINST) /bin/$(EXEC)
clean:
        rm -f $(EXEC) *.elf *.gdb *.o

$ make clean

$ cd ..

$ tar czvf hello-1.0.tar.gz hello-1.0

$ mv hello-1.0.tar.gz /opt/freescale/pkgs/

$ cd ~/ltib/

$ mkdir dist/lfs-5.1/hello

$ cp dist/lfs-5.1/template/template.spec dist/lfs-5.1/hello/hello.spec

$ vi dist/lfs-5.1/hello/hello.spec

%define pfx /opt/freescale/rootfs/%{_target_cpu}

Summary         : hello print demo
Name            : hello
Version         : 1.0
Release         : 1
License         : BSD
Vendor          : lht
Packager        : xxxx
Group           : Applications/Communications
URL             : http://www.test.com
Source          : %{name}-%{version}.tar.gz
BuildRoot       : %{_tmppath}/%{name}
Prefix          : %{pfx}

%Description
%{summary}

%Prep
%setup

%Build
make

%Install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/%{pfx}/usr/bin
cp hello $RPM_BUILD_ROOT/%{pfx}/usr/bin/

%Clean
rm -rf $RPM_BUILD_ROOT

%Files
%defattr(-,root,root)
%{pfx}/*

 

2 制作测试包

$ ./ltib -m prep -p hello.spec

$ ./ltib -m scbuild -p hello.spec

$ ./ltib -m scinstall -p hello.spec

$ ./ltib -m scdeploy -p hello.spec

如果一切正常,则hello可执行程序就在rootfs/usr/bin目录了。

 

3 将hello包添加到ltib配置环境

$ vi ~/ltib/config/userspace/packages.lkc #添加下面内容

 

config PKG_HELLO
    bool "hello"

 

$ vi ~/ltib/config/userspace/pkg_map #添加下面的内容

 

PKG_HELLO = hello

 

4 配置并使用

$ ./ltib -c

根据提示进入package list选项,选择[X] hello (NEW)

然后重新编译即可

注意!如果提示rpm/BUILD/hello-1.0目录已经存在,就手动删除该目录重新执行./ltib就可以编译了。

 

 


    
[2] Intent跟PendingIntent的关系
    来源: 互联网  发布时间: 2014-02-18
Intent和PendingIntent的关系
Intent和PendingIntent的关系,初学的时候很迷惑,用PendingIntent的时候,还会出现奇怪的问题,比如无法传递数据,无法更新数据,所以我集众家之长,加上我个人的一些实践,总结如下,希望能给你一些帮助。

首先看官方解释:An Intent is something that is used right now; a PendingIntent is something that may create an Intent in the future. You will use a PendingIntent with Notifications, AlarmManager, etc.

Intent大家都很熟悉了,就是一个意图,这个意图表明要启动哪个Activity,Service,PendingIntent可以看作是对Intent的进一步封装,它是对Intent的描述,我们可以把这个描述交给别的程序,别的程序根据这个描述在后面的时间做你安排做的事情,下面是一个发送SMS短信的例子:

String msg ="你好"; 
String number = "135****6784";
SmsManager sms = SmsManager.getDefault();      
PendingIntent pi = PendingIntent.getBroadcast(SmsActivity.this,0,new Intent(XXX),0);
sms.sendTextMessage(number, null, msg, pi, null);
Toast.makeText(SmsActivity.this,"发送成功",Toast.LENGHT_LONG).sho();   

方法SmsManager.sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent):
1.PendingIntent sentIntent:当短信发出时,成功的话sendIntent会把其内部的描述的intent广播出去,当然失败之后会产生错误代码,并通过 android.app.PendingIntent.OnFinished进行回调("Callback");
2.PendingIntent deliveryIntent:是当消息已经传递给收信人后所进行的Intent广播;

如果你的BroadcastReveiver注册接收相应的消息,你就会收到相应的Intent,这时候就可以根据Intent的Action,执行相应的动作,这就是上面说的in the future的含义;
有三个静态方法可以获得PendingIntent实例:
public static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags)   
public static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags)   
public static PendingIntent getService(Context context, int requestCode, Intent intent, int flags)  

flags参数有三个,我觉得英文更好理解:
FLAG_ONE_SHOT:this PendingIntent can only be used once. If set, after send() is called on it, it will be automatically canceled for you and any future attempt to send through it will fail.

FLAG_UPDATE_CURRENT: if the described PendingIntent already exists, then keep it but its replace its extra data with what is in this new Intent. This can be used if you are creating intents where only the extras change, and don't care that any entities that received your previous PendingIntent will be able to launch it with your new extras even if they are not explicitly given to it.
这个简单解释一下,就是当存在时,先把原来的取消,然后创建一个新的,在AlarmManager服务时,修改一个闹铃,用的比较笨的的方法,先取消,然后重新注册,其实加上这个参数就行了。

要注意的是,这个只更新extra data,不会修改其他内容,不能new一个Intent,还有就是如果你的Intent中需要传递Id或者其他数据,一定要用这个flags或者FLAG_CANCEL_CURRENT,曾经一直接收不到Id,查了半天原来是这个原因 :-(
LAG_NO_CREATE:if the described PendingIntent does not already exist, then simply return null instead of creating it.

LAG_CANCEL_CURRENT:if the described PendingIntent already exists, the current one is canceled before generating a new one.You can use this to retrieve a new PendingIntent when you are only changing the extra data in the Intent; by canceling the previous pending intent, this ensures that only entities given the new data will be able to launch it. If this assurance is not an issue, consider FLAG_UPDATE_CURRENT.

上面4个flag中最经常使用的是FLAG_UPDATE_CURRENT,因为描述的Intent有更新的时候需要用到这个flag去更新你的描述(确切的说是更新extra data),否则组件在下次事件发生或时间到达的时候extras永远是第一次Intent的extras,使用FLAG_CANCEL_CURRENT也能做到更新extras,只不过是先把前面的extras清除,另外FLAG_CANCEL_CURRENT和FLAG_UPDATE_CURRENT的区别在于能否新new一个Intent,FLAG_CANCEL_CURRENT能够新new一个Intent,而FLAG_UPDATE_CURRENT则不能,只能使用第一次的Intent。


还有一个问题就是怎么区分PendingIntent,主要取消的时候要用到,requestCode可以区分,但系统还是根据Intent的Action去区分的,如果Intent设置了Class,classData,取消的时候Intent一定要设置要相同的,不然取消不掉就可能出现取消后,Alarm还会响的问题,PendingIntent用的地方蛮多的,像 Notifications, AlarmManager等都会用到。。。

以下是参考的文章:

http://yichen914.spaces.live.com/blog/cns!723590D920FAF62B!703.entry
http://hi.chinaunix.net/?uid-21747227-action-viewspace-itemid-48368
http://jimmymouse.iteye.com/blog/760505
本文出自 “超越梦想” 博客,请务必保留此出处
http://breezy.blog.51cto.com/2400264/424154



    
[3] 替freescale MX28包设置自动启动
    来源: 互联网  发布时间: 2014-02-18
为freescale MX28包设置自动启动

1. 首先制作init.d脚本,如:

$ vi dist/lfs-5.1/remserial/remserial.spec 

 

cat << EOF > $RPM_BUILD_ROOT/%{pfx}/etc/rc.d/init.d/remserial
#!/bin/sh

if [ ! -x /sbin/remserial ]
then
    exit 0
fi

if [ "$1" = "stop" -o "$1" = "restart" ]
then
    echo "Stopping the remserial: "
    killall remserial
fi
if [ "$1" = "start" -o "$1" = "restart" ]
then
    echo "Starting the remserial: "
    /sbin/remserial -d -p 23000 -s "9600 raw" /dev/ttyS0 &
fi
EOF

 

 2 编辑config/userspace/sysconfig.lkc,增加:

 

config SYSCFG_START_REMSERIAL
    depends PKG_REMSERIAL
    bool "start remserail"
    default y

 

 3 编辑dist/lfs-5.1/sysconfig/sysconfig-mx.spec增加新的服务:

 

if [ "$SYSCFG_START_REMSERIAL" = "y" ] then
    remserial=remserial
fi
all_services = 后面增加 remserial
all_services_r = 后面增加 remserial
cfg_services = 后面增加 $remserial
cfg_services_r = 后面增加 $remserail
  

 


    
最新技术文章:
▪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开发之登录验证实例教程 iis7站长之家
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3