android内核字符驱动设备实战之----------应用层测试程序篇

一、通过eclipse开发工具开发具有用户界面的测试程序。工程名称TestDev

主程序源代码MainActivity.java如下:

package com.example.testdev;

import android.os.Bundle;
import android.os.RemoteException;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

//这个类在1.6版本后被隐藏掉了,在系统内可以编译通过
//eclipse却不行,eclipse里如何获取服务再研究
import android.os.ServiceManager;

//导入测试接口
import android.os.ITestService; 

public class MainActivity extends Activity 
{
   //读取键
    private Button readBtn;
   //写入键
    private Button writeBtn;
   //清空键
    private Button clearBtn;
   //文本编辑框
    private EditText editVal;
	
   //定义测试服务接口
   private ITestService testService = null;  
	
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
      
        //通过服务管理器获取服务,然后把服务转换为接口,注意服务名test小写
         testService = ITestService.Stub.asInterface(ServiceManager.getService("test"));  
       
        //获取控件
         readBtn = (Button)findViewById(R.id.readbtn);
        writeBtn = (Button)findViewById(R.id.writebtn);
        clearBtn = (Button)findViewById(R.id.clearbtn);      
        editVal = (EditText)findViewById(R.id.valueEdit);
        
        //设置读取按键的监听器
          readBtn.setOnClickListener(new OnClickListener() 
        {			
	  @Override
	  public void onClick(View v) 
	 {
             try 
             {  
	       int val = testService.getVal();  
	       String text = String.valueOf(val);  
	       editVal.setText(text);  
	    } 
             catch (RemoteException e){          
	    }      
          }
        });
        
       //设置写入监听器
        writeBtn.setOnClickListener(new OnClickListener()
       {			
	@Override
	public void onClick(View v) 
	{
	   try 
	  {  
	      String text = editVal.getText().toString();  
	      int val = Integer.parseInt(text);  
	      testService.setVal(val);  
	  } 
	  catch (RemoteException e){  
           }  
         }
      });
        
        //清理监听器
         clearBtn.setOnClickListener(new OnClickListener()
        {			
	  @Override
	   public void onClick(View v) 
            {
	     editVal.setText("");
	   }
        });
    }
}

二、将TestDev这个目录里的文件拷贝至packages/experimental目录(应用试验性目录)

注意要把gen目录删除,否则编译会出错,一般来说只需要src\res两个目录,其他的目录都可删除

三、在packages/experimental/TestDev目录中,新增Android.mk文件

文件内容如下:

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := optional
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := Hello
include $(BUILD_PACKAGE)

四、编译:

/Android$ mmm packages/experimental/TestDev

编译成功后,便可以在out/target/product/generic/system/app目录下看到TestDev.apk文件了。

五、重新打包系统镜像文件system.img:

Android$ make snod
  重新打包后的system.img文件就内置了TestDev.apk文件了。

六. 运行Android模拟器:

Android$ emulator -kernel kernel/goldfish/arch/arm/boot/zImage &

查看调试信息:

adb shell

logcat

 

 
 

你可能感兴趣的:(android内核字符驱动设备实战之----------应用层测试程序篇)