当前位置:  编程技术>移动开发
本页文章导读:
    ▪Marvell sd8782 sdio wifi AP配备        Marvell sd8782 sdio wifi AP配置     手头产品是类似于IPC的设备,通过wifi传输视频。目标客户可能在户外使用较多,这就要求wifi 应该是Ap模式工作。Marvell sd8782 Src 源码下载 根据习惯,度娘上一.........
    ▪ Layout Tests 施用场景 - 百度手机浏览器T5内核2 - LayoutTest apk 结构分析        Layout Tests 应用场景 - 百度手机浏览器T5内核2 - LayoutTest apk 结构分析百度手机浏览器的体验地址: http://shouji.baidu.com/browser/ =========================正文=========================================== 从上一篇.........
    ▪ 百度map之图层展示       百度地图之图层展示本文中主要摘录图层展示控制功能,即对普通图、卫星图及交通流量图展示的控制,方法非常简单,关键点就2个方法:setMapMode(控制普通图和卫星图的显示)、setTraffic.........

[1]Marvell sd8782 sdio wifi AP配备
    来源: 互联网  发布时间: 2014-02-18
Marvell sd8782 sdio wifi AP配置

     手头产品是类似于IPC的设备,通过wifi传输视频。目标客户可能在户外使用较多,这就要求wifi 应该是Ap模式工作。Marvell sd8782 Src 源码下载

根据习惯,度娘上一顿收缩,参考博文一篇。

     测试uaputl 工具报错,所有命令全部不能配置。因为实际使用的marvell驱动是芯片家直接给的,而手头有的源码版本要低些,uaputl工具是低版本源码编译的,可能这里有版本差异在里面了,先放放,后面拿到源码再试这个。

     那我用iwpriv 工具来配置网卡了。

一、装一堆驱动模块

#insmod rfkill_backport.ko;
#insmod compat_firmware_class.ko;
#insmod compat.ko;
#insmod cfg80211.ko;
#insmod mlan.ko

#insmod sd8xxx.ko drv_mode=2&
#echo 1 > /sys/class/compat_firmware/mmc1\:0001\:1/loading
#cat "/lib/firmware/sd8782_uapsta.bin" > /sys/class/compat_firmware/mmc1\:0001\:1/data
#echo 0 > /sys/class/compat_firmware/mmc1\:0001\:1/loading

上面三行命令作用是,我们使用的底层驱动有bug,自己找不到sd8782_uapsta.bin文件(无论是直接编译进内核,还是用udev,nxp技术支持大哥这么解释)。手工指定个路径暂时解决下。

二、iwpriv配置

#iwpriv uap0 apcfg "ASCII_CMD=AP_CFG,SSID=TEST_uAP,SEC=open,CHANNEL=8"

#iwpriv uap0 start
#iwpriv uap0 bssstart

这时可以识别到uap0了

/drivers # iwconfig
lo        no wireless extensions.

dummy0    no wireless extensions.

uap0      IEEE 802.11-DS  ESSID:""  
          Mode:Master  Frequency:2.437 GHz  Access Point: Not-Associated   
          Encryption key:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

三、配置Ip地址

/drivers # ifconfig uap0 192.168.1.2
/drivers # ifconfig
uap0      Link encap:Ethernet  HWaddr 48:02:2A:31:37:26  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

四、用手机测试下,能识别到这个无线网络了,但是链接不上,这时udhcp要上场了。

下载交叉编译udhcp,当然busybox里面已经带udhcp的,独立编译或着编译busybox都可以。

本人选择独立编译,省事。

修改makefile: CROSS_COMPILE=arm-linux-

#make

把udhcpd copy到您的文件系统下(PS,我还编译了dhcpd,出来有5M多)。

在samples下拷个udhcpd.conf放到/etc/下。

然后自己对udhcpd.conf修修改改,就可以跑来了。



    
[2] Layout Tests 施用场景 - 百度手机浏览器T5内核2 - LayoutTest apk 结构分析
    来源: 互联网  发布时间: 2014-02-18
Layout Tests 应用场景 - 百度手机浏览器T5内核2 - LayoutTest apk 结构分析

百度手机浏览器的体验地址: http://shouji.baidu.com/browser/

=========================正文===========================================

从上一篇的执行示意图中可以看到,LayoutTest 的执行以及报告生成都发生在 apk

 中,所以 apk 是这个测试方案的核心,本文就着重讲述这个 apk 

LayoutTests apk的结构
从 AndrodManifest.xml 里面可以看到,这个 apk 由一个 Application 一个 Instrumentation组成。
Instrumentation  
是可以让应用通过  adb shell am instrument 的命令启动这个 apk,并传入参数进来,目前这个参数是测试用例的相对路径
mTestsRelativePath = arguments.getString("path");
Application 包括三个Activity 和 一个 service。 ManagerService 

顾名思义,是管理者的角色,实际上是负责TestsListActivity、Executor 还有一个 Summarizer 进行沟通的。

三个Activity,

DirListActivity 

是通 luncher 点开apk之后展现测试列表的 Activity,如下图:


TestsListActivity 

主要作用是遍历 server 端的目录,找到给定路径下面所有的测试case,存入到变量中,调用 Executor 去执行,并且等 executor 的执行结果,把结果通过 managerService 传递给 Summerizer。

executor 在独立的进程中

是真正加载测试用例(网页)的activity,它封装了百度的统一内核SDK,统一内核SDK封装了T5 内核。executor 中通过 BWebView.loadUrl 加载 TestsListActivity 传递过来的 url,调用到 T5 内核进行 html 的解析、渲染,JavaScript 的执行 等。当页面加载完成之后,会调用 dumpAsText 把页面中的文本导入到文本文件中。比如下面这个测试用例:

fast/cookies/local-file-can-set-cookies.html

<html>
<head>
<title>Local File Can Set Cookies</title>
<script src="/fast/js/resources/js-test-pre.js"></script>
</head>

<body>
<script>
    description('This test checks that a local file can set cookies.  See: rdar://problem/5379090 REGRESSION: Cannot set cookies for local files');

    shouldBe("document.cookie.indexOf('ppkcookie1=testcookie')", "-1");
    document.cookie = 'ppkcookie1=testcookie';
    shouldBeTrue("document.cookie.indexOf('ppkcookie1=testcookie') >= 0");
</script>
<script src="/fast/js/resources/js-test-post.js"></script>
</body>
</html>

在相同目录下由一个文件 fast/cookies/local-file-can-set-cookies-expected.txt

This test checks that a local file can set cookies. See: rdar://problem/5379090 REGRESSION: Cannot set cookies for local files

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS document.cookie.indexOf('ppkcookie1=testcookie') is -1
PASS document.cookie.indexOf('ppkcookie1=testcookie') >= 0 is true
PASS successfullyParsed is true

TEST COMPLETE
LayoutTest 执行完这个 case 之后页面会显示如下图:


dumpAsText 会把页面存到 sdcard 里面,文件名是 fast/cookies/local-file-can-set-cookies-actual.txt,当然,字体信息会丢失,但是不影响文本比对。

之后对比 fast/cookies/local-file-can-set-cookies-expected.txt 和fast/cookies/local-file-can-set-cookies-actual.txt

如果两者相同,就PASS,如果不同,就 Fail。 (ps. 如果这个case 过不了,显然是一个最基本的问题,浏览器引擎根本无法上线使用。)

LayoutTest apk 的核心源码


下一篇再分析详细过程


2楼u0111873612013-06-24 10:20fdasdsadsasadsadsa1楼suannai03142013-06-21 11:26您的文章已被推荐到博客首页和个人页侧边栏推荐文章,感谢您的分享。

    
[3] 百度map之图层展示
    来源: 互联网  发布时间: 2014-02-18
百度地图之图层展示

本文中主要摘录图层展示控制功能,即对普通图、卫星图及交通流量图展示的控制,方法非常简单,关键点就2个方法:setMapMode(控制普通图和卫星图的显示)、setTraffic(控制交通图的显示)代码如下:

Activity:

package com.home;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.RadioButton;

import com.baidu.mapapi.BMapManager;
import com.baidu.mapapi.map.MapController;
import com.baidu.mapapi.map.MapView;
import com.baidu.platform.comapi.basestruct.GeoPoint;

/**
 * 演示地图图层显示的控制方法
 */
public class LayersShowActivity extends Activity {

	/**
	 * MapView 是地图主控件
	 */
	private MapView mMapView = null;
	/**
	 * 用MapController完成地图控制
	 */
	private MapController mMapController = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		/**
		 * 使用地图sdk前需先初始化BMapManager. BMapManager是全局的,可为多个MapView共用,它需要地图模块创建前创建,
		 * 并在地图地图模块销毁后销毁,只要还有地图模块在使用,BMapManager就不应该销毁
		 */
		DemoApplication app = (DemoApplication) this.getApplication();
		if (app.mBMapManager == null) {
			app.mBMapManager = new BMapManager(this);
			/**
			 * 如果BMapManager没有初始化则初始化BMapManager
			 */
			app.mBMapManager.init(DemoApplication.strKey,
					new DemoApplication.MyGeneralListener());
		}
		/**
		 * 由于MapView在setContentView()中初始化,所以它需要在BMapManager初始化之后
		 */
		setContentView(R.layout.activity_layers);
		mMapView = (MapView) findViewById(R.id.bmapView);
		/**
		 * 获取地图控制器
		 */
		mMapController = mMapView.getController();
		/**
		 * 设置地图是否响应点击事件 .
		 */
		mMapController.enableClick(true);
		/**
		 * 设置地图缩放级别
		 */
		mMapController.setZoom(12);
		/**
		 * 显示内置缩放控件
		 */
		mMapView.setBuiltInZoomControls(true);

		/**
		 * 将地图移动至天安门
		 * 使用百度经纬度坐标,可以通过http://api.map.baidu.com/lbsapi/getpoint/index
		 * .html查询地理坐标 如果需要在百度地图上显示使用其他坐标系统的位置,请发邮件至mapapi@baidu.com申请坐标转换接口
		 */
		double cLat = 39.945;
		double cLon = 116.404;
		GeoPoint p = new GeoPoint((int) (cLat * 1E6), (int) (cLon * 1E6));
		mMapController.setCenter(p);
	}

	/**
	 * 设置底图显示模式
	 * 
	 * @param view
	 */
	public void setMapMode(View view) {
		boolean checked = ((RadioButton) view).isChecked();
		switch (view.getId()) {
		case R.id.normal:
			if (checked)
				mMapView.setSatellite(false);
			break;
		case R.id.statellite:
			if (checked)
				mMapView.setSatellite(true);
			break;
		}
	}

	/**
	 * 设置是否显示交通图
	 * 
	 * @param view
	 */
	public void setTraffic(View view) {
		mMapView.setTraffic(((CheckBox) view).isChecked());
	}

	@Override
	protected void onPause() {
		/**
		 * MapView的生命周期与Activity同步,当activity挂起时需调用MapView.onPause()
		 */
		mMapView.onPause();
		super.onPause();
	}

	@Override
	protected void onResume() {
		/**
		 * MapView的生命周期与Activity同步,当activity恢复时需调用MapView.onResume()
		 */
		mMapView.onResume();
		super.onResume();
	}

	@Override
	protected void onDestroy() {
		/**
		 * MapView的生命周期与Activity同步,当activity销毁时需调用MapView.destroy()
		 */
		mMapView.destroy();
		super.onDestroy();
	}

	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		mMapView.onSaveInstanceState(outState);

	}

	@Override
	protected void onRestoreInstanceState(Bundle savedInstanceState) {
		super.onRestoreInstanceState(savedInstanceState);
		mMapView.onRestoreInstanceState(savedInstanceState);
	}

}

布局XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <RadioGroup
            android:id="@+id/RadioGroup"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="2"
            android:orientation="horizontal" >

            <RadioButton
                android:id="@+id/normal"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:checked="true"
                android:onClick="setMapMode"
                android:text="普通图" />

            <RadioButton
                android:id="@+id/statellite"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:onClick="setMapMode"
                android:text="卫星图" />
        </RadioGroup>

        <CheckBox
            android:id="@+id/traffice"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:checked="false"
            android:onClick="setTraffic"
            android:text="交通图" />
    </LinearLayout>

    <com.baidu.mapapi.map.MapView
        android:id="@+id/bmapView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:clickable="true" />

</LinearLayout>


Application类和Manifest同之前的文章。
附上图片效果:


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