一、android项目中广告展示
有米广告和万普广告等等。可以参考博客:(http://blog.csdn.net/windrui/article/details/7218576)内容如下:
经过了一番折腾,忙忙碌碌了一下午,终于搞明白了Android软件界面嵌入广告的方法,以下我以嵌入有米广告为例小结一下: 我的新浪微博(wind瑞):http://weibo.com/tianrui1990 步骤一,下载有米广告SDK,将 youmi-android.jar 导入想要嵌入广告的的工程中。 1. 右键您的工程根目录,选择“Properties” 2. 在左面板中选择“Java Build Path” 3. 然后选择“Libraries”标签 4. 点击“Add External JARs„” 5. 选择 youmi-android.jar 的目录路径. 6. 点击“OK”即导入成功 步骤二,在AndroidManifest.xml文件中配置用户权限。 请务必配置以下权限,否则将有可能获取不到广告。 1. android.permission.INTERNET,连接网络权限 INTERNET ,用于请求广告 2. android.permission.READ_PHONE_STATE,用于精确统计用户手机的系统信息 3. android.ACCESS_NETWORK_STATE,用于精确识别网络接入点等信息 4. android.permission.ACCESS_COARSE_LOCATION,有助于精准投放地域广告以及帮助统计使用应用程序的用户的地区分布情况 5. android.permission.WRITE_EXTERNAL_STORAGE,有助于实现图片资源的缓存,节省流量,并可获得更好的用户体验 请将下面权限配置代码复制到 AndroidManifest.xml 文件中: <!-- 必须申明的权限 --> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 以下为可选的权限 --> <!-- 使用GPS获取用户精确定位信息 --> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <!-- 使用WIFI获取用户精确定位信息 --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 步骤三,在AndroidManifest.xml中添加AdActivity。 AdActivity是广告展示的载体,请在AndroidManifest.xml中添加AdActivity: <activity android:name="net.youmi.android.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation"/> <meta-data android:name="YOUMI_CHANNEL" android:value="0" /> 步骤四,初始化账号信息。 在主Activity的onCreate中调用AdManager.init() 初始化 App ID 、App Secret、请求广告间隔和测试模式等参数(请务必在任意AdView初始化前调用一次)。 //第一个参数为您的应用发布Id //第二个参数为您的应用密码 //第三个参数是请求广告的间隔,有效的设置值为30至200,单位为秒 //第四个参数是设置测试模式,设置为true时,可以获取测试广告,正式发布请设置此参数为false AdManager.init(Context context,String appid, String appsec, int intervalSecond, boolean isTestMode); !注意:3.04版本开始AdManager.init方法的参数改为五个,加上了Context参数!调试阶段将测试模式设置为true,请将测试模式设置为false后上传至网站等待审核。 !未上传应用安装包、未通过审核的应用、模拟器运行,都只能获得测试广告,审核通过后,模拟器上依旧是测试广告,真机才会获取到正常的广告。 代码如下: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 应用Id 应用密码 广告请求间隔(s) 测试模式 AdManager.init(this,"537ef88653a2993c", "b9e10bcfe994a9fb", 30, true); setContentView(R.layout.main); } 步骤五,使用xml布局嵌入广告 1.在 res/values 文件夹中添加 attrs.xml。如果你没有添加这个文件,那你将不能在 layout 中设置 AdView 的属性。attrs.xml 文件的内容如下: <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable name="net.youmi.android.AdView"> <!--广告背景颜色[只对文字广告有效](取值范围为#000000----#ffffff) --> <attr name="backgroundColor" format="color" /> <!--广告文本颜色[只对文字广告有效](取值范围为#000000----#ffffff) --> <attr name="textColor" format="color" /> <!--广告背景透明度[只对文字广告有效],默认为 255,设置范围0-255 --> <attr name="backgroundTransparent" format="integer"/> </declare-styleable> </resources> 2.在布局main.xml中嵌入有米广告视图: 以下为一个实例: <?xml version="1.0" encoding="utf-8"?> <!-- 需要设置命名空间 :umadsdk --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:umadsdk="http://schemas.android.com/apk/res/com.youmi" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <net.youmi.android.AdView android:id="@+id/adView" android:layout_width="fill_parent" android:layout_height="wrap_content" umadsdk:textColor="#ffffff" umadsdk:backgroundColor="#4076AA" umadsdk:backgroundTransparent="155"/> </LinearLayout> 注意: xmlns:umadsdk=”http://schemas.android.com/apk/res/您的应用包名” 这句一定要加上,不然编辑器会提示错误。 3.XML布局代码部分 import net.youmi.android.AdManager; import android.app.Activity; import android.os.Bundle; public class TestAdActivity extends Activity{ /** Called when the activity is first created. */ // 应用Id 应用密码 广告请求间隔(s) 测试模式 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 应用Id 应用密码 广告请求间隔(s) 测试模式 AdManager.init(this,"537ef88653a2993c", "b9e10bcfe994a9fb", 30, true); setContentView(R.layout.main); } } 我的新浪微博(wind瑞):http://weibo.com/tianrui1990 原作者:wind瑞 源地址:http://blog.csdn.net/tianruirui/article/details/7218576 转载请标明原作者和转载地址,谢谢!! 最后运行结果如下图所示:
二、android中自动化测试框架-----robotium
转载自(http://www.51testing.com/html/26/492926-842908.html)
移动终端游戏将在公司发展计划中占有很大的比重。安卓系统在移动终端市场占有很大的一个市场,探索安卓系统下的自动化测试对公司发展有积极的意义。 ANDROID自动化测试工具:ROBOTIUM ROBOTIUM的介绍 Robotium是一款测试Android Application的测试框架,它使得编写黑盒测试代码更加容易和稳定。通过使用Robotium,测试用例开发人员能够跨越多个Activity,开发出功能、系统以及验收测试用例。Robotium是基于Android测试框架InstrumentationTestCase2进行的2次封装,把一些基本操作又简化了一遍。 ROBOTIUM的优势: 针对黑盒测试 在测试过程中,不必需要测试程序的源代码,只要apk文件(前提是需要知道测试程序的package和activity) 可以直接运行在手机上,并通过adb端获得运行结果。 在使用该工具的时候有一点必须:当编辑完测试脚本后,会生成一个apk文件,将该apk安装到手机端,并通过abd输入一系列命令后直接运行测试脚本。但该apk的签名必须要与测试程序的apk签名保持一致。 ROBOTIUM的环境设置 JDK (Java Development Kit) Eclipse for building Test project ADT (Android Development Tools) Android SDK (Software Development Kit) Robotium-solo-*.*.*.jar ROBOTIUM进行测试的方法和步骤 1、 创建测试项目 点击Next 填写项目取的名称 选择被测工程,如之前创建的firstHello,点击Next按钮。 会主动选择和输入Build Target,可以遵守默认的,不消批改。 点击Finish,一个测试项目创建好了。 2、项目中导入ROBOTIUM.JAR 选择测试工程右击,选择Build Path->Configure Build Path 3、创建测试脚本CLASS。 创建之后脚本: 测试脚本 package com.example.firsthello.test; import android.test.ActivityInstrumentationTestCase2; import com.example.firsthello.MainActivity; import com.jayway.android.robotium.solo.Solo; public class UITextTest extends ActivityInstrumentationTestCase2<MainActivity> { private Solo solo; @SuppressWarnings("deprecation") public UITextTest() { //初始化函数 告诉系统要测试的APP是什么。 super("com.example.firsthello.MainActivity",MainActivity.class); // TODO Auto-generated constructor stub } //每一个test case 都会调用setUp进行初始化 public void setUp() throws Exception { solo= new Solo(getInstrumentation(),getActivity()); } // 测试具体实例 public void testUI()throws Exception { boolean expected =true; boolean actual =solo.searchText("Hello")&& solo.searchText("world!"); assertEquals("This and/or is are not found",expected,actual); } } 测试 robotium测试总结 1、测试类要继承ActivityInstrumentationTestCase2<测试类类名> 2、构造方法中super("包名", 测试类类名.class); 3、setUp方法中solo = new Solo(getInstrumentation(), getActivity()); 4、tearDown方法中 try { solo.finalize(); } catch (Throwable e) { e.printStackTrace(); } getActivity().finish(); super.tearDown(); 5、点击自动化 clickOnMenuItem("菜单名") clickInList(列表行数) 注:从1开始 clickOnText("(?i).*?test.*") 点击文本 clickLongOnText("Note 2") 长时间点击文本 clickOnButton("按钮名") 点击按钮 6、输入自动化 enterText(号,"输入的内容") 7、屏幕控制 setActivityOrientation(Solo.LANDSCAPE或Solo.PORTRAIT) 控制屏幕横向或纵向显示 8、跳转 goBack() 模仿硬返回键 goBackToActivity("Activity名") 跳到指定的Activity 9、判断 判断当前是否是指定的Activity assertCurrentActivity("测试提示", "Activity名"); 搜索指定文本是否存在 searchText("搜索文本")或searchText("(?i).*?note 1 test") 后面这个是正则表达式 10、获取 (EditText) solo.getView(R.id.EditText01); (TextView) solo.getView(R.id.TextView01); ArrayList currentTextViews = solo.getCurrentTextViews(outputField); 11、点击按钮等测试中需要注意2点: (1)真机测试时发现,屏保后点击按钮测试会报找不到该按钮,也就是点不中的意思,看来测试机器人还真仿真啊。 (2)点击按钮后有个延迟的过程,以后的测试需要循环等待一段时间,否则直接进入下面的测试后误报错错误,此处处理示例如下: // 点击按钮开启服务 solo.clickOnButton(butStartService); // 判断指定服务是否存在 long start = System.currentTimeMillis(); while (!isServiceStarted(SERVICE_PACKAGE_NAME)) { try { Thread.sleep(1000); } catch (InterruptedException e) { } if ((System.currentTimeMillis() - start) > TIMEOUT) { break; } } assertTrue("没有开启服务", isServiceStarted(SERVICE_PACKAGE_NAME));
(三)json解析:fastjson和gson解析
(四)jpush推送消息:个推,jpush极光,百度推送
(五)分享:友盟和shareSDK
(六)测试:百度云测试、云测试