当前位置:  编程技术>移动开发
本页文章导读:
    ▪G-SENSOR芯片BMA250调试札记        G-SENSOR芯片BMA250调试笔记 1、BMA250采用I2C通信,CLK设置为400K。 2、BMA250的INT1作为中断输出,接CPU的EINT25。主要用来做特定的中断使用,比如倾角(X、Y、Z角度)达到设定值时,将产生中断,.........
    ▪ 学习札记12—UITabBarController        学习笔记12—UITabBarControllerUITabBarController是选项卡栏导航控制器,显示效果是在页面底部有多个选项卡,通过点击不同选项卡可以在不同的ViewController之间进行切换。 这种对象的层次结构至.........
    ▪ Handler 之学习撮要       Handler 之学习摘要   Handler内容摘要 : /**    *handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程), 它有两个作用: (1): 安排消息.........

[1]G-SENSOR芯片BMA250调试札记
    来源: 互联网  发布时间: 2014-02-18
G-SENSOR芯片BMA250调试笔记


1、BMA250采用I2C通信,CLK设置为400K。

2、BMA250的INT1作为中断输出,接CPU的EINT25。主要用来做特定的中断使用,比如倾角(X、Y、Z角度)达到设定值时,将产生中断,通知CPU。这种功能主要做某些特定功能使用,比如翻车时,如果没有熄火,BMA250检测到垂直角度有变化,将提示是否自动报警,如果在规定时间内没有反应,就会自动报警,从而达到尽快救援的目的。

3、原厂提供了相应的Kernel和android 驱动,只需要按步骤添加即可。但原厂提供的kernel代码需要修正,即每次读取X、Y、Z数据完成后,会调用input_sync(bma250->input)函数告诉上层数据要刷新,这个函数会导致外部的其它设备数据也跟着刷新,产生的现象有:机器支持USB鼠标功能,但没插入鼠标,界面上也显示鼠标的光标。把input_sync(bma250->input)函数修改为input_mt_sync(bma250->input)即可解决。

4、测试方法:

(1)把kernel和android驱动都添加完成后,勾上“设置”---->“显示”---->“自动旋转屏幕”,旋转机器时,界面显示顺序也会跟着实际方向变化,若变化的角度与实际角度不符,需要修改android对X、Y、Z的数据处理。

(2)开机后,若把kernel中读X、Y、Z数据的函数bma250_read_accel_xyz相关LOG放开,会发现上层一直在不断的读取这些数据。翻转机器时,这些数据会相应的跟着改变。若在同一角度X、Y、Z数据无特别大的变化,说明数据读取正常。

(3)使能BMA250_ENABLE_INT1时,设置好BMA250_INT_ENABLE1_REG寄存器,则可以看到当翻转机器时,CPU的EINT25会检测到BMA250产生的中断,执行中断线程。


    
[2] 学习札记12—UITabBarController
    来源: 互联网  发布时间: 2014-02-18
学习笔记12—UITabBarController

UITabBarController是选项卡栏导航控制器,显示效果是在页面底部有多个选项卡,通过点击不同选项卡可以在不同的ViewController之间进行切换。


这种对象的层次结构至少包含6个对象:

一个UITabBarController;

两个UIViewController;

一个UITabBar;

两个UITabBarItem;


UITabBarController是选项卡栏视图控制器,UITabBar是底部两个UITabBarItem的容器,管理两个UITabBarItem,每个UITabBarItem对应一个UIViewController,然后每个UIViewController都有自己的视图和视图控制器。


UITabBarController中有一个viewControllers属性,这是一个NSArray,包含选项卡控制器的视图控制器


下面来用代码创建一个UITabBarController:

下面是工程结构:

首先创建两个带xib文件的ViewController,分别为FirstViewController和SecondViewController

然后在AppDelegate.h中声明@property (strong, nonatomic) UITabBarController *tabBarController;,并添加协议UITabBarControllerDelegate


在.m中实现如下代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
   
    //第一个tab的viewController
    FirstViewController *firstViewController = [[FirstViewController alloc]init];
   
    //如果在这里指定tabitem标题,则在FirstViewController中指定self.tabBarItem.title则不生效   
    firstViewController.title = @"First view";
   
    UITabBarItem *firstItem = [[UITabBarItem alloc]initWithTitle:@"First" image:nil tag:1];
    [firstItem setFinishedSelectedImage:[UIImage imageNamed:@"p1"] withFinishedUnselectedImage:[UIImage imageNamed:@"p1_f"]];
    firstViewController.tabBarItem = firstItem;
   
   
    SecondViewController *secondViewController = [[SecondViewController alloc]init];
   
    //构建TabBarItem
    UITabBarItem *secondItem = [[UITabBarItem alloc]initWithTitle:@"Second" image:nil tag:2];
   
    //设置选中和非选中状态下的图片
    [secondItem setFinishedSelectedImage:[UIImage imageNamed:@"p2_f"] withFinishedUnselectedImage:[UIImage imageNamed:@"p2"]];
    //右上角小图标
   [secondItem setBadgeValue:@"2"];
    //指定tabBarItem
    secondViewController.tabBarItem = secondItem;
    [secondItem release];
   
    //构建UITabBarController并指定代理为本身
    self.tabBarController = [[[UITabBarController alloc]init] autorelease];
    self.tabBarController.delegate = self;
   
    //为UITabBarController添加TabBarItem
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:firstViewController,secondViewController, nil];
   
    [firstViewController release];
    [secondViewController release];
   
    //设置选中哪个tab
//    [self.tabBarController setSelectedIndex:0];
   
    //指定根视图
    self.window.rootViewController  = self.tabBarController;
   
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    return YES;
}



效果比较简单,有需要源码的可以给我留言,谢谢,另外,欢迎关注我的新浪微博:唐韧_Ryan


    
[3] Handler 之学习撮要
    来源: 互联网  发布时间: 2014-02-18
Handler 之学习摘要

   Handler内容摘要 :

/**   

*handler可以分发Message对象和Runnable对象到主线程中, 每个Handler实例,都会绑定到创建他的线程中(一般是位于主线程), 它有两个作用: (1): 安排消息或Runnable

  * 在某个主线程中某个地方执行, (2)安排一个动作在不同的线程中执行
 *
 *         Handler中分发消息的一些方法 post(Runnable) postAtTime(Runnable,long)
 *         postDelayed(Runnable long) sendEmptyMessage(int) sendMessage(Message)
 *         sendMessageAtTime(Message,long) sendMessageDelayed(Message,long)
 *
 *         以上post类方法允许你排列一个Runnable对象到主线程队列中, sendMessage类方法,
 *         允许你安排一个带数据的Message对象到队列中,等待更新. 三、Handler实例
 *
 *         (1) 子类需要继承Hendler类,并重写handleMessage(Message msg) 方法, 用于接受线程数据
 *
 *         以下为一个实例,它实现的功能为 : 通过线程修改界面Button的内容
 */

 不说废话了,直接上代码 :

 main.xml 文件,在此 清单文件就不给出 了, 清单文件在eclipse中新建一个项目即可。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <!--  TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:padding="@dimen/padding_medium"
        android:text="@string/hello_world"
        tools:context=".MainActivity" />
        -->
        <Button
            android:id="@+id/btn1"
            android:text="Button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
          
            />

</RelativeLayout>

 MainActivity 类 :

package com.example.testhandler;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Button;
import android.support.v4.app.NavUtils;

public class MainActivity extends Activity {

 Button button;
 MyHandler myHandler;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  button = (Button) findViewById(R.id.btn1);
  myHandler = new MyHandler();
  // 当创建一个新的Handler实例时,它会绑定到当前线程和消息队列中,开始分发数据
  // Handler 有两个最用 :
  // 1 ,定时执行Message 和Runable对象
  // 2 ,让一个动作,在不同的线程中执行
  // 它安排消息,用以下方法
  // post(Runnable)

  // postAtTime(Runnable,long)

  // postDelayed(Runnable,long)

  // sendEmptyMessage(int)

  // sendMessage(Message);

  // sendMessageAtTime(Message,long)

  // sendMessageDelayed(Message,long)

  // 以上方法以post开头的允许你处理 Runnable对象,
  // sendMessage 允许你处理Message对象(Message 里可以包含数据)
  MThread m = new MThread();
  new Thread(m).start();
 }

 /**
  * 接收消息,处理消息,此handler会与主线程一起运行
  *
  * @author chon
  *
  */
 class MyHandler extends Handler {
  public MyHandler(){}
  public MyHandler(Looper L){
   super(L);
  }
  //子类必须重写此方法,接收数据
  @Override
  public void handleMessage(Message msg) {
   // TODO Auto-generated method stub
   Log.i("Other", "MyHandler");
   super.handleMessage(msg);
   //此处可以更新UI
   Bundle b = msg.getData();
   String color = b.getString("color");
   MainActivity.this.button.append(color);
   
  }

 }

 class MThread implements Runnable {

  @Override
  public void run() {
   // TODO Auto-generated method stub
   try {
    Thread.sleep(10000);
   } catch (Exception e) {
    e.printStackTrace();
   }
   Message message  = new Message();
   Bundle b =new Bundle (); //存放数据
   b.putString("color", "我的 color");
   message.setData(b);
   
   //向Handler发送消息,更新UI
   MainActivity.this.myHandler.sendMessage(message);
  }

 }

}

 

 

 


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


站内导航:


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

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

浙ICP备11055608号-3