Chinaunix首页 | 论坛 | 博客
  • 博客访问: 409245
  • 博文数量: 101
  • 博客积分: 2247
  • 博客等级: 大尉
  • 技术积分: 979
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-15 22:39
文章分类

全部博文(101)

文章存档

2012年(1)

2011年(100)

分类: 嵌入式

2011-06-19 16:12:38

前言
   随着学习的深入,我们准备去修改一下源码,扩充其API 以满足我们自己的个性化要求!比如,能够拨打一个电话,并返回该电话是否成功,是对方忙还是网络信号不好等等。

========================================================================
按照 ASE 的 WiKi 上的文档,基本就可以了。几个注意点:
1)  ASE 需要使用 Java1.6
2)  AndroidScriptingEnvironmentTest 需要造一个 res 目录,才能编译通过。
 
添加代码

考虑到代码的干净性,我们决定添加一个项目,在其中添加我们自己开发的 API 函数.
TextToSpeechFacade 比较简单,我们就模仿它了。
cp –a TextToSpeechFacade DragonCustomFacade
 
然后搜索一下需要修改的地方:
$ find . | xargs grep TextToSpeechFacade
./AndroidScriptingEnvironment/src/com/google/ase/facade/FacadeConfiguration.java:      list.addAll(MethodDescriptor.collectFrom(TextToSpeechFacade.class));
./AndroidScriptingEnvironment/src/com/google/ase/facade/FacadeConfiguration.java:      receivers.add(new TextToSpeechFacade(service));
./AndroidScriptingEnvironment/.classpath:  
./DragonCustomFacade/src/com/google/ase/facade/TextToSpeechFacade.java:public class TextToSpeechFacade implements RpcReceiver {
./DragonCustomFacade/src/com/google/ase/facade/TextToSpeechFacade.java:  public TextToSpeechFacade(Service service) {
./DragonCustomFacade/.project:  TextToSpeechFacade
 
这样, 我们需要修改的地方有:
?         AndroidScriptingEnvironment/src/com/google/ase/facade/FacadeConfiguration.java
中的两处,这里是把一个 Fa?ade类挂接到系统中以及初始化该类。所以我们需要把我们的DragonCustomFacade相应代码加入,注意初始化函数有几种形式,按需。
?         ./AndroidScriptingEnvironment/.classpath
这里是定义依赖关系,简单模仿。
?         ./DragonCustomFacade/src/com/google/ase/facade/TextToSpeechFacade.java
将该Java 文件改为DragonCustomFacade.java, 并修改其中的内容。 作为示例,我们只是现实一个Toast对话框。后续,我们可以按需扩充其中的功能。
 
package com.google.ase.facade;
 
import android.app.Service;
import android.widget.Toast;
 
import com.google.ase.jsonrpc.RpcReceiver;
import com.google.ase.rpc.Rpc;
import com.google.ase.rpc.RpcParameter;
 
import android.os.Handler;
 
public class DragonCustomFacade implements RpcReceiver {
  private final Handler mHandler = new Handler();
  private final Service mService;
 
  public DragonCustomFacade(Service service) {
    mService = service;
  }
 
  @Override
  public void shutdown() {
  }
 
  @Rpc(description = "Displays a short-duration Toast notification.")
  public void DragonMakeToast(@RpcParameter(name = "message") final String message) {
    mHandler.post(new Runnable() {
      public void run() {
        Toast.makeText(mService, message, Toast.LENGTH_SHORT).show();
      }
    });
  }
 
}
 
编译,运行,并用python脚本调用我们的函数:
$ cat t2.py
import android
droid = android.Android()
droid.DragonMakeToast('Hello, Dragon!')
 
运行之,发现可以打印出 Hello, Dragon!

=======================================================================
参考
1.编译 ASE

2.转载:
http://blog.csdn.net/zjujoe/archive/2010/06/22/5687206.aspx
阅读(1009) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~