diff --git a/README.md b/README.md
index a22ecdd..cff7cd0 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
自定义统计SDK, 完全放弃第三方平台,让app拥有自主的数据统计功能
>支持页面统计
>自定义事件统计
->APP启动退出统计,不同渠道统计
+>APP启动退出统计,crsah日志统计
@@ -84,12 +84,12 @@ APP常规数据统计
设置上报策略的代码示例如下:
- // 设置策略模式 第一个是策略模式 ,第二是是时间(单位/分)
+
+ // 设置策略模式 第一个是策略模式 ,第二是是时间(单位/分)
TcStatInterface.setUploadPolicy(TcStatInterface.UploadPolicy.UPLOAD_POLICY_INTERVA, 3);
-
-
+
API说明
@@ -99,7 +99,8 @@ API说明
请具体看demo 注释
5. 集成步骤
-4.1 依赖项目
+
+5.1 依赖项目
gradle中配置依赖module, 将项目增加为自己的子模块
@@ -109,26 +110,71 @@ API说明
compile project(':StatInterface')
}
- 4.2 配置Settings.gradle
+ 5.2 配置Settings.gradle
include ':app' ,':StatInterface'
- 4.3 加入权限
+ 5.3 加入权限
+
见2.1的说明。
- 4.4 初始化
+ 5.4 初始化
+
+ Application的onCreate():
+
+ // assets
+ String fileName = "stat_id.json";
+
+ String url = "http://www.baidu.com";
+ // init statSdk
+ TcStatInterface.initialize(this, appId, "you app chanel", fileName);
+ // set upload url
+ TcStatInterface.setUrl(url);
+
见2.3说明 具体见demo
- 4.5 其他
+ 5.5 其他
+
如果你还在用Eclispe,直接用源码或者依赖jar
- TcStatSdk_1.0.jar
+
+ TcStatSdk_2.0.jar
+
+ 5.6 调用
+
+
+
+ findViewById(R.id.id_button).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TcStatInterface.onEvent("main", "onlick", "send data");
+ //发送数据
+ TcStatInterface.reportData();
+
+ }
+
+ });
+
+ findViewById(R.id.id_button2).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+
+ // 测试
+ TcStatInterface.onEventParameter("onclick", "open next");
+
+ Intent intent = new Intent(MainActivity.this, SecondActivity.class);
+ startActivity(intent);
+
+ }
+
+ });
注意
--
- 目前服务端代码需要你自我实现,数据结结构按客户端数据Modle实现即可。
+
+ 目前服务端代码需要你自我实现,数据结结构按客户端数据Model实现即可。
> 作者:Tamic : http://www.jianshu.com/p/cd83e81b78aa
-> 统计数据存储前期:Zhangliang
+> crash日志:NULL
diff --git a/StatInterface/build.gradle b/StatInterface/build.gradle
index 3f9a105..8202a7d 100644
--- a/StatInterface/build.gradle
+++ b/StatInterface/build.gradle
@@ -1,14 +1,17 @@
apply plugin: 'com.android.library'
+apply plugin: 'com.github.dcendents.android-maven'
+apply plugin: 'com.jfrog.bintray'
+version = "2.4"
android {
- compileSdkVersion 23
- buildToolsVersion '23.0.2'
+ compileSdkVersion 26
+ buildToolsVersion '26.0.2'
defaultConfig {
minSdkVersion 14
- targetSdkVersion 23
- versionCode 1
- versionName "1.0"
+ targetSdkVersion 26
+ versionCode 4
+ versionName version
}
buildTypes {
release {
@@ -20,7 +23,98 @@ android {
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
- compile 'de.greenrobot:greendao:2.1.0'
compile 'com.alibaba:fastjson:1.2.8+'
compile 'com.loopj.android:android-async-http:1.4.9'
}
+
+def siteUrl = 'https://github.com/NeglectedByBoss/TcStatInterface'
+def gitUrl = 'https://github.com/NeglectedByBoss/TcStatInterface.git'
+group = "com.tamic"
+
+install {
+ repositories.mavenInstaller {
+ // This generates POM.xml with proper parameters
+ pom {
+ project {
+ packaging 'aar'
+ // Add your description here
+ name 'TcStat'
+ url siteUrl
+ // Set your license
+ licenses {
+ license {
+ name 'The Apache Software License, Version 2.0'
+ url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
+ }
+ }
+ developers {
+ developer {
+ id 'tamic'
+ name 'tamic'
+ email 'skay5200@163.com'
+ }
+ }
+ scm {
+ connection gitUrl
+ developerConnection gitUrl
+ url siteUrl
+ }
+ }
+ }
+ }
+}
+
+task sourcesJar(type: Jar) {
+ from android.sourceSets.main.java.srcDirs
+ classifier = 'sources'
+}
+task javadoc(type: Javadoc) {
+ source = android.sourceSets.main.java.srcDirs
+ classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
+}
+task javadocJar(type: Jar, dependsOn: javadoc) {
+ classifier = 'javadoc'
+ from javadoc.destinationDir
+}
+artifacts {
+ archives javadocJar
+ archives sourcesJar
+}
+
+Properties properties = new Properties()
+properties.load(project.rootProject.file('local.properties').newDataInputStream())
+
+
+bintray {
+ user = properties.getProperty("bintray.user")
+ key = properties.getProperty("bintray.apikey")
+ configurations = ['archives']
+ pkg {
+ repo = "maven"
+ name = "TcStat"
+ desc = "App 多维度统计库"
+ websiteUrl = siteUrl
+ vcsUrl = gitUrl
+ licenses = ["Apache-2.0"]
+ labels = ['android']
+ publish = true
+ publicDownloadNumbers = true
+ }
+}
+
+
+javadoc {
+ options{
+ encoding "UTF-8"
+ charSet 'UTF-8'
+ author true
+ version true
+ links "http://docs.oracle.com/javase/7/docs/api"
+ }
+}
+
+tasks.withType(Javadoc) {
+ options.addStringOption('Xdoclint:none', '-quiet')
+ options.addStringOption('encoding', 'UTF-8')
+ options.addStringOption('charSet', 'UTF-8')
+}
\ No newline at end of file
diff --git a/StatInterface/build/generated/source/buildConfig/androidTest/debug/com/tamic/statInterface/statsdk/test/BuildConfig.java b/StatInterface/build/generated/source/buildConfig/androidTest/debug/com/tamic/statInterface/statsdk/test/BuildConfig.java
deleted file mode 100644
index 1af0a1d..0000000
--- a/StatInterface/build/generated/source/buildConfig/androidTest/debug/com/tamic/statInterface/statsdk/test/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.tamic.statInterface.statsdk.test;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String APPLICATION_ID = "com.tamic.statInterface.statsdk.test";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0";
-}
diff --git a/StatInterface/build/generated/source/buildConfig/debug/com/tamic/statInterface/statsdk/BuildConfig.java b/StatInterface/build/generated/source/buildConfig/debug/com/tamic/statInterface/statsdk/BuildConfig.java
deleted file mode 100644
index b24282c..0000000
--- a/StatInterface/build/generated/source/buildConfig/debug/com/tamic/statInterface/statsdk/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.tamic.statInterface.statsdk;
-
-public final class BuildConfig {
- public static final boolean DEBUG = Boolean.parseBoolean("true");
- public static final String APPLICATION_ID = "com.tamic.statInterface.statsdk";
- public static final String BUILD_TYPE = "debug";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0";
-}
diff --git a/StatInterface/build/generated/source/buildConfig/release/com/tamic/statInterface/statsdk/BuildConfig.java b/StatInterface/build/generated/source/buildConfig/release/com/tamic/statInterface/statsdk/BuildConfig.java
deleted file mode 100644
index b73fd18..0000000
--- a/StatInterface/build/generated/source/buildConfig/release/com/tamic/statInterface/statsdk/BuildConfig.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- * Automatically generated file. DO NOT MODIFY
- */
-package com.tamic.statInterface.statsdk;
-
-public final class BuildConfig {
- public static final boolean DEBUG = false;
- public static final String APPLICATION_ID = "com.tamic.statInterface.statsdk";
- public static final String BUILD_TYPE = "release";
- public static final String FLAVOR = "";
- public static final int VERSION_CODE = 1;
- public static final String VERSION_NAME = "1.0";
-}
diff --git a/StatInterface/build/generated/source/r/androidTest/debug/com/tamic/statInterface/statsdk/R.java b/StatInterface/build/generated/source/r/androidTest/debug/com/tamic/statInterface/statsdk/R.java
deleted file mode 100644
index 8d38c7e..0000000
--- a/StatInterface/build/generated/source/r/androidTest/debug/com/tamic/statInterface/statsdk/R.java
+++ /dev/null
@@ -1,13 +0,0 @@
-/* AUTO-GENERATED FILE. DO NOT MODIFY.
- *
- * This class was automatically generated by the
- * aapt tool from the resource data it found. It
- * should not be modified by hand.
- */
-package com.tamic.statInterface.statsdk;
-
-public final class R {
- public static final class string {
- public static final int app_name = 0x7f020000;
- }
-}
diff --git a/StatInterface/build/generated/source/r/androidTest/debug/com/tamic/statInterface/statsdk/test/R.java b/StatInterface/build/generated/source/r/androidTest/debug/com/tamic/statInterface/statsdk/test/R.java
deleted file mode 100644
index 6c60325..0000000
--- a/StatInterface/build/generated/source/r/androidTest/debug/com/tamic/statInterface/statsdk/test/R.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* AUTO-GENERATED FILE. DO NOT MODIFY.
- *
- * This class was automatically generated by the
- * aapt tool from the resource data it found. It
- * should not be modified by hand.
- */
-
-package com.tamic.statInterface.statsdk.test;
-
-public final class R {
- public static final class attr {
- }
- public static final class string {
- public static final int app_name=0x7f020000;
- }
-}
diff --git a/StatInterface/build/generated/source/r/debug/com/tamic/statInterface/statsdk/R.java b/StatInterface/build/generated/source/r/debug/com/tamic/statInterface/statsdk/R.java
deleted file mode 100644
index 02c3ca0..0000000
--- a/StatInterface/build/generated/source/r/debug/com/tamic/statInterface/statsdk/R.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* AUTO-GENERATED FILE. DO NOT MODIFY.
- *
- * This class was automatically generated by the
- * aapt tool from the resource data it found. It
- * should not be modified by hand.
- */
-
-package com.tamic.statInterface.statsdk;
-
-public final class R {
- public static final class attr {
- }
- public static final class string {
- public static int app_name=0x7f020000;
- }
-}
diff --git a/StatInterface/build/generated/source/r/release/com/tamic/statInterface/statsdk/R.java b/StatInterface/build/generated/source/r/release/com/tamic/statInterface/statsdk/R.java
deleted file mode 100644
index 02c3ca0..0000000
--- a/StatInterface/build/generated/source/r/release/com/tamic/statInterface/statsdk/R.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/* AUTO-GENERATED FILE. DO NOT MODIFY.
- *
- * This class was automatically generated by the
- * aapt tool from the resource data it found. It
- * should not be modified by hand.
- */
-
-package com.tamic.statInterface.statsdk;
-
-public final class R {
- public static final class attr {
- }
- public static final class string {
- public static int app_name=0x7f020000;
- }
-}
diff --git a/StatInterface/build/intermediates/bundles/debug/AndroidManifest.xml b/StatInterface/build/intermediates/bundles/debug/AndroidManifest.xml
deleted file mode 100644
index 27561f8..0000000
--- a/StatInterface/build/intermediates/bundles/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/bundles/debug/R.txt b/StatInterface/build/intermediates/bundles/debug/R.txt
index a80644b..a0e507b 100644
--- a/StatInterface/build/intermediates/bundles/debug/R.txt
+++ b/StatInterface/build/intermediates/bundles/debug/R.txt
@@ -1 +1 @@
-int string app_name 0x7f020000
+int string app_name 0x7f150001
diff --git a/StatInterface/build/intermediates/bundles/debug/aapt/AndroidManifest.xml b/StatInterface/build/intermediates/bundles/debug/aapt/AndroidManifest.xml
deleted file mode 100644
index 27561f8..0000000
--- a/StatInterface/build/intermediates/bundles/debug/aapt/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/bundles/debug/classes.jar b/StatInterface/build/intermediates/bundles/debug/classes.jar
index b865168..cd2d114 100644
Binary files a/StatInterface/build/intermediates/bundles/debug/classes.jar and b/StatInterface/build/intermediates/bundles/debug/classes.jar differ
diff --git a/StatInterface/build/intermediates/bundles/debug/res/values/values.xml b/StatInterface/build/intermediates/bundles/debug/res/values/values.xml
index 7f658ad..cadb10e 100644
--- a/StatInterface/build/intermediates/bundles/debug/res/values/values.xml
+++ b/StatInterface/build/intermediates/bundles/debug/res/values/values.xml
@@ -1,6 +1,4 @@
-
-
statLibrary
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/bundles/release/AndroidManifest.xml b/StatInterface/build/intermediates/bundles/release/AndroidManifest.xml
deleted file mode 100644
index 15eb723..0000000
--- a/StatInterface/build/intermediates/bundles/release/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/bundles/release/R.txt b/StatInterface/build/intermediates/bundles/release/R.txt
deleted file mode 100644
index a80644b..0000000
--- a/StatInterface/build/intermediates/bundles/release/R.txt
+++ /dev/null
@@ -1 +0,0 @@
-int string app_name 0x7f020000
diff --git a/StatInterface/build/intermediates/bundles/release/aapt/AndroidManifest.xml b/StatInterface/build/intermediates/bundles/release/aapt/AndroidManifest.xml
deleted file mode 100644
index 15eb723..0000000
--- a/StatInterface/build/intermediates/bundles/release/aapt/AndroidManifest.xml
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/bundles/release/classes.jar b/StatInterface/build/intermediates/bundles/release/classes.jar
deleted file mode 100644
index 3704027..0000000
Binary files a/StatInterface/build/intermediates/bundles/release/classes.jar and /dev/null differ
diff --git a/StatInterface/build/intermediates/bundles/release/res/values/values.xml b/StatInterface/build/intermediates/bundles/release/res/values/values.xml
deleted file mode 100644
index aed9459..0000000
--- a/StatInterface/build/intermediates/bundles/release/res/values/values.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
- statLibrary
-
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/manifests/androidTest/debug/AndroidManifest.xml b/StatInterface/build/intermediates/manifests/androidTest/debug/AndroidManifest.xml
deleted file mode 100644
index 97289eb..0000000
--- a/StatInterface/build/intermediates/manifests/androidTest/debug/AndroidManifest.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/StatInterface/build/intermediates/manifests/tmp/manifestMerger7085977054703475003.xml b/StatInterface/build/intermediates/manifests/tmp/manifestMerger7085977054703475003.xml
deleted file mode 100644
index 0c748ad..0000000
--- a/StatInterface/build/intermediates/manifests/tmp/manifestMerger7085977054703475003.xml
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/StatInterface/build/intermediates/res/androidTest/debug/values/values.xml b/StatInterface/build/intermediates/res/androidTest/debug/values/values.xml
deleted file mode 100644
index 7730988..0000000
--- a/StatInterface/build/intermediates/res/androidTest/debug/values/values.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
- statLibrary
-
\ No newline at end of file
diff --git a/StatInterface/build/tmp/packageDebugJar/MANIFEST.MF b/StatInterface/build/tmp/packageDebugJar/MANIFEST.MF
deleted file mode 100644
index 59499bc..0000000
--- a/StatInterface/build/tmp/packageDebugJar/MANIFEST.MF
+++ /dev/null
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-
diff --git a/StatInterface/build/tmp/packageReleaseJar/MANIFEST.MF b/StatInterface/build/tmp/packageReleaseJar/MANIFEST.MF
deleted file mode 100644
index 59499bc..0000000
--- a/StatInterface/build/tmp/packageReleaseJar/MANIFEST.MF
+++ /dev/null
@@ -1,2 +0,0 @@
-Manifest-Version: 1.0
-
diff --git a/StatInterface/src/main/AndroidManifest.xml b/StatInterface/src/main/AndroidManifest.xml
index 4238b43..3aceb9a 100644
--- a/StatInterface/src/main/AndroidManifest.xml
+++ b/StatInterface/src/main/AndroidManifest.xml
@@ -1,16 +1,33 @@
+ package="com.tamic.statinterface.stats">
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/constants/NetConfig.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/constants/NetConfig.java
similarity index 92%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/constants/NetConfig.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/constants/NetConfig.java
index e724a85..8167dd0 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/constants/NetConfig.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/constants/NetConfig.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.constants;
+package com.tamic.statinterface.stats.constants;
/**
* Created by Tc on 2016-03-25.
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/constants/StaticsConfig.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/constants/StaticsConfig.java
similarity index 67%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/constants/StaticsConfig.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/constants/StaticsConfig.java
index e22199f..328382b 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/constants/StaticsConfig.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/constants/StaticsConfig.java
@@ -1,7 +1,4 @@
-package com.tamic.statInterface.statsdk.constants;
-
-import de.greenrobot.dao.Property;
-
+package com.tamic.statinterface.stats.constants;
/**
* StaticsConfig
* Created by Tamic on 2016-03-30.
@@ -22,16 +19,7 @@ private StaticsConfig() {
public final static String ENVENT_INFO = "enventInfo";
public final static String CRASH_INFO = "crashInfo";
- /**1*/
- public static final int APP_ID_HF = 100;
- /**1*/
- public static final int APP_ID_AAZ = 200;
- /**1)*/
- public static final int APP_ID_HFT = 300;
- /***/
- public static final int APP_ID_HGJ = 400;
- /***/
- public static final int APP_ID_HSH = 500;
+
/* 1分钟,5分钟,10分钟,20分钟,30分钟发送
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/core/IUpLoadlistener.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/IUpLoadlistener.java
new file mode 100644
index 0000000..e3b3f52
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/IUpLoadlistener.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.tamic.statinterface.stats.core;
+
+/**
+ * 上报状态接口
+ * Created by Tamic on 2016-03-25.
+ */
+public interface IUpLoadlistener {
+
+ void onStart();
+
+ void onUpLoad();
+
+ void onSucess();
+
+ void onFailure();
+
+ void onCancell();
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/StaticsListener.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/StaticsListener.java
similarity index 77%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/StaticsListener.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/StaticsListener.java
index c45f5f3..1b868ee 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/StaticsListener.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/StaticsListener.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import java.util.HashMap;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcCrashHandler.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcCrashHandler.java
new file mode 100644
index 0000000..f1038bc
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcCrashHandler.java
@@ -0,0 +1,52 @@
+package com.tamic.statinterface.stats.core;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.tamic.statinterface.stats.db.helper.StaticsAgent;
+import com.tamic.statinterface.stats.model.ExceptionInfo;
+import com.tamic.statinterface.stats.util.DeviceUtil;
+
+/**
+ * Created by null on 2016/9/22.
+ */
+public class TcCrashHandler implements Thread.UncaughtExceptionHandler {
+ private Context context;
+ public static TcCrashHandler INSTANCE;
+ private Thread.UncaughtExceptionHandler uncaughtExceptionHandler;
+
+ private TcCrashHandler() {
+ }
+
+ public void init(Context context) {
+ this.context = context;
+ uncaughtExceptionHandler = Thread.getDefaultUncaughtExceptionHandler();
+ Thread.setDefaultUncaughtExceptionHandler(this);
+ }
+
+
+ public static TcCrashHandler getInstance() {
+ if (INSTANCE == null) {
+ INSTANCE = new TcCrashHandler();
+ }
+ return INSTANCE;
+ }
+
+ @Override
+ public void uncaughtException(Thread thread, Throwable ex) {
+ if (ex != null) {
+ StackTraceElement[] stackTraceElements = ex.getStackTrace();
+ Log.i("jiangTest", stackTraceElements.length + "---");
+ StringBuffer stringBuffer = new StringBuffer();
+ stringBuffer.append(ex.getMessage()).append("\n");
+ for (int i = stackTraceElements.length - 1; i >= 0; i--) {
+ stringBuffer.append(stackTraceElements[i].getFileName()).append(":").append(stackTraceElements[i].getClassName()).append(stackTraceElements[i].getMethodName()).append("(").append(stackTraceElements[i].getLineNumber()).append(")").append("\n");
+ }
+ Log.i("jiangTest", stringBuffer.toString());
+ StaticsAgent.storeObject(new ExceptionInfo(DeviceUtil.getPhoneModel(), DeviceUtil.getSystemModel(), String.valueOf(DeviceUtil.getSystemVersion()), stringBuffer.toString()));
+ }
+ android.os.Process.killProcess(android.os.Process.myPid());
+ System.exit(0);
+
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcHeadrHandle.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcHeadrHandle.java
similarity index 76%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcHeadrHandle.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcHeadrHandle.java
index 39dac9f..fb1f91c 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcHeadrHandle.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcHeadrHandle.java
@@ -1,20 +1,22 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
+import android.Manifest;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationManager;
+import android.os.Build;
import android.provider.Settings;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
-import com.tamic.statInterface.statsdk.model.header.AppInfo;
-import com.tamic.statInterface.statsdk.model.header.DeviceInfo;
-import com.tamic.statInterface.statsdk.model.header.HeaderInfo;
-import com.tamic.statInterface.statsdk.model.header.NetworkInfo;
-import com.tamic.statInterface.statsdk.util.DeviceUtil;
-import com.tamic.statInterface.statsdk.util.NetworkUtil;
+import com.tamic.statinterface.stats.model.header.AppInfo;
+import com.tamic.statinterface.stats.model.header.DeviceInfo;
+import com.tamic.statinterface.stats.model.header.HeaderInfo;
+import com.tamic.statinterface.stats.model.header.NetworkInfo;
+import com.tamic.statinterface.stats.util.DeviceUtil;
+import com.tamic.statinterface.stats.util.NetworkUtil;
import java.util.List;
import java.util.Locale;
@@ -35,7 +37,7 @@ public class TcHeadrHandle {
private static HeaderInfo headerInfo;
- private static boolean isInit ;
+ private static boolean isInit;
private static int appId;
@@ -47,7 +49,7 @@ protected static boolean initHeader(Context context, int AppId, String channel)
if (headerInfo == null) {
appId = AppId;
- mChannel= channel;
+ mChannel = channel;
networkinfo = new NetworkInfo();
headerInfo = new HeaderInfo(getAppInfo(context), getDeviceInfo(context), getNetWorkInfo(context));
isInit = true;
@@ -100,8 +102,8 @@ private static AppInfo getAppInfo(Context context) {
appinfo.setSdk_verson_name(DeviceUtil.getSdkName());
return appinfo;
- }catch (PackageManager.NameNotFoundException e1) {
- e1.printStackTrace();
+ } catch (PackageManager.NameNotFoundException e1) {
+ e1.printStackTrace();
return null;
}
}
@@ -176,12 +178,12 @@ protected static NetworkInfo getNetWorkInfo(Context context) {
networkinfo.setWifi_ind(NetworkUtil.isWifi(context));
- if(mTelephonyMgr.getSimState() == TelephonyManager.SIM_STATE_READY) {
+ if (mTelephonyMgr.getSimState() == TelephonyManager.SIM_STATE_READY) {
networkinfo.setCarrier(mTelephonyMgr.getSimOperatorName());
}
Location location = getLocation(context);
- if(location != null){
+ if (location != null) {
networkinfo.setLatitude(String.valueOf(location.getLatitude()));
networkinfo.setLongitude(String.valueOf(location.getLongitude()));
}
@@ -208,8 +210,24 @@ private static Location getLocation(Context context) {
locationProvider = LocationManager.NETWORK_PROVIDER;
} else {
- locationProvider = LocationManager.GPS_PROVIDER;;
+ locationProvider = LocationManager.GPS_PROVIDER;
+
+ }
+
+ if (Build.VERSION.SDK_INT > 23) {
+ if (context.checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
+ context.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ // TODO: Consider calling
+ // Activity#requestPermissions
+ // here to request the missing permissions, and then overriding
+ // public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ // int[] grantResults)
+ // to handle the case where the user grants the permission. See the documentation
+ // for Activity#requestPermissions for more details.
+ return locationManager.getLastKnownLocation(locationProvider);
+ }
}
+
return locationManager.getLastKnownLocation(locationProvider);
}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcIntentManager.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcIntentManager.java
similarity index 99%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcIntentManager.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcIntentManager.java
index c4b0272..6e16543 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcIntentManager.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcIntentManager.java
@@ -1,5 +1,5 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import android.content.Intent;
import android.net.ConnectivityManager;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcNetEngine.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcNetEngine.java
similarity index 93%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcNetEngine.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcNetEngine.java
index 4fb72ac..926a2d4 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcNetEngine.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcNetEngine.java
@@ -1,15 +1,15 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import android.content.Context;
import android.os.Looper;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
-import com.tamic.statInterface.statsdk.constants.NetConfig;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
-import com.tamic.statInterface.statsdk.http.TcHttpClient;
-import com.tamic.statInterface.statsdk.util.JsonUtil;
-import com.tamic.statInterface.statsdk.util.StatLog;
+import com.tamic.statinterface.stats.constants.NetConfig;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
+import com.tamic.statinterface.stats.http.TcHttpClient;
+import com.tamic.statinterface.stats.util.JsonUtil;
+import com.tamic.statinterface.stats.util.StatLog;
import java.net.URLEncoder;
import java.util.HashMap;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcObserverPresenter.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcObserverPresenter.java
similarity index 95%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcObserverPresenter.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcObserverPresenter.java
index f3aa6fa..954bb7a 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcObserverPresenter.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcObserverPresenter.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import android.app.ActivityManager;
import android.content.Context;
@@ -6,12 +6,12 @@
import android.util.Log;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
-import com.tamic.statInterface.statsdk.db.helper.DataConstruct;
-import com.tamic.statInterface.statsdk.presenter.TcDeblockObserver;
-import com.tamic.statInterface.statsdk.presenter.TcNetworkObserver;
-import com.tamic.statInterface.statsdk.presenter.TcScreenObserver;
-import com.tamic.statInterface.statsdk.util.StatLog;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
+import com.tamic.statinterface.stats.db.helper.DataConstruct;
+import com.tamic.statinterface.stats.presenter.TcDeblockObserver;
+import com.tamic.statinterface.stats.presenter.TcNetworkObserver;
+import com.tamic.statinterface.stats.presenter.TcScreenObserver;
+import com.tamic.statinterface.stats.util.StatLog;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatInterface.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatInterface.java
similarity index 87%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatInterface.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatInterface.java
index 74c936e..b85b77e 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatInterface.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatInterface.java
@@ -1,8 +1,10 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import android.content.Context;
-import com.tamic.statInterface.statsdk.constants.NetConfig;
+import com.tamic.statinterface.stats.constants.NetConfig;
+
+import java.util.HashMap;
/**
@@ -25,7 +27,7 @@ public final class TcStatInterface {
protected static final int UPLOAD_POLICY_WHILE_INITIALIZE = 6;
/**
- * 上报策略模式
+ * 上报策略模式.
*/
public enum UploadPolicy {
/**实时发送*/
@@ -42,17 +44,17 @@ public enum UploadPolicy {
UPLOAD_POLICY_WHILE_INITIALIZE
}
- /**实时发送*/
+ /**实时发送.*/
public static final int UPLOAD_INTERVAL_REALTIME = 0;
- /**1分钟*/
+ /**1分钟.*/
public static final int UPLOAD_TIME_ONE = 1;
- /**5分钟*/
+ /**5分钟.*/
public static final int UPLOAD_TIME_THREAD = 3;
- /**10分钟*/
+ /**10分钟.*/
public static final int UPLOAD_TIME_TEN = 10;
- /**20分钟*/
+ /**20分钟.*/
public static final int UPLOAD_TIME_TWENTY = 20;
- /**30分钟发送*/
+ /**30分钟发送.*/
public static final int UPLOAD_TIME_THIRTY = 30;
/**
* 上报策略
@@ -210,25 +212,8 @@ public static void initEvent(String eventName) {
}
-
- /**
- * 加入自定义envent
- * @param k 业务名字
- * @param v 对应值
- */
- public static void onEventParameter(String k,String v) {
-
- TcStatSdk.getInstance(context).setEventParameter(k, v);
-
- }
-
- /**
- * onEvent
- */
- public static void onEvent(String eventName, String k,String v) {
- initEvent(eventName);
- onEventParameter(k, v);
-
+ public static void onEvent(String eventName, HashMap parameters) {
+ TcStatSdk.getInstance(context).onEvent(eventName, parameters);
}
}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatSdk.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatSdk.java
similarity index 70%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatSdk.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatSdk.java
index eccb900..94a67f9 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatSdk.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatSdk.java
@@ -1,11 +1,31 @@
-package com.tamic.statInterface.statsdk.core;
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.tamic.statinterface.stats.core;
import android.content.Context;
+import java.util.HashMap;
+
/**
* StatSdk
* Created by Tamic on 2016-04-05.
+ * {https://github.com/Tamicer/SkyMonitoring}
*/
public class TcStatSdk {
@@ -117,6 +137,10 @@ protected void setEventParameter(String k, String v) {
}
+ protected void onEvent(String eventName, HashMap parameters) {
+ this.staticsManager.onEvent(eventName, parameters);
+ }
+
protected void initPage(String pageId, String referPageId) {
staticsManager.onInitPage(pageId, referPageId);
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatiPollMgr.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatiPollMgr.java
similarity index 95%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatiPollMgr.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatiPollMgr.java
index 99d7096..3a1f586 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStatiPollMgr.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStatiPollMgr.java
@@ -1,5 +1,5 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import android.os.Handler;
import android.os.Looper;
@@ -7,7 +7,7 @@
import android.text.format.DateUtils;
import android.text.format.Time;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
/**
*
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStaticsManager.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStaticsManager.java
new file mode 100644
index 0000000..fa4a21c
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStaticsManager.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.tamic.statinterface.stats.core;
+
+import android.content.Context;
+
+import java.util.HashMap;
+
+/**
+ * Created by Tamic on 2016-04-05.
+ * StaticsManager
+ * #{https://github.com/Tamicer/SkyMonitoring}
+ */
+public interface TcStaticsManager {
+
+ boolean onInit(int appId, String channel, String fileName);
+
+ void onSend();
+
+ void onStore();
+
+ void onRelease();
+
+ void onRecordAppStart();
+
+ void onRrecordPageEnd();
+
+ void onRecordPageStart(Context context);
+
+ void onRrecordAppEnd();
+
+ void onInitPage(String... strings);
+
+ void onPageParameter(String... strings);
+
+ void onInitEvent(String eventName);
+
+ void onEventParameter(String... strings);
+
+ void onEvent(String var1, HashMap var2);
+
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStaticsManagerImpl.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStaticsManagerImpl.java
similarity index 63%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStaticsManagerImpl.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStaticsManagerImpl.java
index 090a950..680df79 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStaticsManagerImpl.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcStaticsManagerImpl.java
@@ -1,44 +1,75 @@
-package com.tamic.statInterface.statsdk.core;
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.tamic.statinterface.stats.core;
import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
import android.text.TextUtils;
import com.alibaba.fastjson.JSON;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
-import com.tamic.statInterface.statsdk.db.helper.DataConstruct;
-import com.tamic.statInterface.statsdk.db.helper.StaticsAgent;
-import com.tamic.statInterface.statsdk.model.DataBlock;
-import com.tamic.statInterface.statsdk.service.Platform;
-import com.tamic.statInterface.statsdk.util.JsonUtil;
-import com.tamic.statInterface.statsdk.util.NetworkUtil;
-import com.tamic.statInterface.statsdk.util.StatLog;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
+import com.tamic.statinterface.stats.db.helper.DataConstruct;
+import com.tamic.statinterface.stats.db.helper.StaticsAgent;
+import com.tamic.statinterface.stats.model.DataBlock;
+import com.tamic.statinterface.stats.service.Platform;
+import com.tamic.statinterface.stats.util.JsonUtil;
+import com.tamic.statinterface.stats.util.NetworkUtil;
+import com.tamic.statinterface.stats.util.StatLog;
import java.io.InputStream;
import java.util.HashMap;
import cz.msebera.android.httpclient.util.EncodingUtils;
-import static com.tamic.statInterface.statsdk.core.TcNetEngine.TAG;
+import static com.tamic.statinterface.stats.core.TcNetEngine.TAG;
/**
* StaticsManagerImpl core
- * Created by LIUYONGKUI726 on 2016-03-24.
+ * Created by Tamic on 2016-03-24.
+ * #{https://github.com/Tamicer/SkyMonitoring}
*/
public class TcStaticsManagerImpl implements TcStaticsManager, TcObserverPresenter.ScheduleListener {
- /** context */
+
+ /**
+ * context
+ */
private Context mContext;
- /** sInstance */
+ /**
+ * sInstance
+ */
private static TcStaticsManager sInstance;
private static TcObserverPresenter paObserverPresenter;
+ private UploadThread mUploadThread = null;
+
private StaticsListener eventInterface;
private TcStatiPollMgr statiPollMgr;
HashMap pageIdMaps = new HashMap();
- /** Log TAG */
+ /**
+ * Log TAG
+ */
private static final String LOG_TAG = TcStatiPollMgr.class.getSimpleName();
public TcStaticsManagerImpl(Context mContext) {
@@ -48,12 +79,20 @@ public TcStaticsManagerImpl(Context mContext) {
@Override
public boolean onInit(int appId, String channel, String fileName) {
+ if (mUploadThread == null) {
+ mUploadThread = new UploadThread();
+ mUploadThread.start();
+ }
+
// init ObserverPresenter
paObserverPresenter = new TcObserverPresenter(this);
// init StaticsAgent
StaticsAgent.init(mContext);
+ // init CrashHandler
+ TcCrashHandler.getInstance().init(mContext);
+
// load pageIdMaps
pageIdMaps = getStatIdMaps(fileName);
@@ -65,7 +104,9 @@ public boolean onInit(int appId, String channel, String fileName) {
@Override
public void onSend() {
- // report data to server
+
+ StaticsAgent.getDataBlock(mUploadThread.mHandler);
+ /* // report data to server
Platform.get().execute(new Runnable() {
@Override
public void run() {
@@ -80,12 +121,12 @@ public void run() {
TcUpLoadManager.getInstance(mContext).report(JsonUtil.toJSONString(dataBlock));
}
});
-
+*/
}
@Override
public void onStore() {
- DataConstruct.storeEvent();
+ DataConstruct.storeEvents();
DataConstruct.storePage();
}
@@ -109,7 +150,7 @@ public void onRecordAppStart() {
@Override
public void onRrecordPageEnd() {
- DataConstruct.storeEvent();
+ DataConstruct.storeEvents();
DataConstruct.storePage();
if (paObserverPresenter != null) {
paObserverPresenter.onStop(mContext);
@@ -124,10 +165,9 @@ public void onRecordPageStart(Context context) {
return;
}
- //开始计时
+ //startSchedule
startSchedule();
-
String pageId = checkValidId(context.getClass().getSimpleName());
if (pageId == null) {
pageId = context.getClass().getSimpleName();
@@ -151,38 +191,34 @@ public void onRrecordAppEnd() {
//recard APP exit
DataConstruct.storeAppAction("2");
-
onSend();
-
onRelease();
}
@Override
public void onInitPage(String... strings) {
-
DataConstruct.initPage(mContext, eventInterface, strings[0], strings[1]);
-
}
@Override
public void onPageParameter(String... strings) {
-
DataConstruct.initPageParameter(strings[0], strings[1]);
-
}
@Override
public void onInitEvent(String eventName) {
-
- DataConstruct.initEvent(eventInterface, eventName);
+ DataConstruct.initEvent(eventName);
}
@Override
public void onEventParameter(String... strings) {
-
DataConstruct.onEvent(strings[0], strings[1]);
+ }
+ @Override
+ public void onEvent(String eventName, HashMap parameters) {
+ DataConstruct.initEvent(eventName, parameters);
}
/**
@@ -190,11 +226,9 @@ public void onEventParameter(String... strings) {
*/
private boolean initHeader(int appId, String channel) {
-
if (!TcHeadrHandle.isInit()) {
return TcHeadrHandle.initHeader(mContext, appId, channel);
}
-
return false;
}
@@ -205,7 +239,6 @@ private boolean initHeader(int appId, String channel) {
void onScheduleTimeOut() {
StatLog.d(LOG_TAG, "onScheduleTimeOut is sendData");
-
onSend();
}
@@ -216,23 +249,24 @@ public void startSchedule() {
// if debug time is 5 min
if (StaticsConfig.DEBUG &&
TcStatInterface.uploadPolicy == TcStatInterface.UploadPolicy.UPLOAD_POLICY_DEVELOPMENT) {
- statiPollMgr.start(5* 1000);
+ statiPollMgr.start(5 * 1000);
StatLog.d(LOG_TAG, "Schedule is start");
} else {
if (NetworkUtil.isWifi(mContext)) {
- statiPollMgr.start(TcStatInterface.getIntervalRealtime() * 60 *1000);
+ statiPollMgr.start(TcStatInterface.getIntervalRealtime() * 60 * 1000);
} else {
- statiPollMgr.start(TcStatInterface.UPLOAD_TIME_THIRTY * 60 *1000);
+ statiPollMgr.start(TcStatInterface.UPLOAD_TIME_THIRTY * 60 * 1000);
}
-
}
}
- /** checkValidId
+ /**
+ * checkValidId
+ *
* @param name activitiyname
- * @return pageId
+ * @return pageId
*/
- private String checkValidId(String name) {
+ private String checkValidId(String name) {
if (TextUtils.isEmpty(name)) {
return null;
}
@@ -244,7 +278,9 @@ private String checkValidId(String name) {
}
- /** getPageId
+ /**
+ * getPageId
+ *
* @param clazz
* @return
*/
@@ -275,7 +311,6 @@ public void onStart() {
@Override
public void onStop() {
-
stopSchedule();
}
@@ -290,26 +325,53 @@ public void onReStart() {
public HashMap getStatIdMaps(String jsonName) {
-
HashMap map = null;
if (getFromAsset(jsonName) != null) {
- map = (HashMap) JSON.parseObject(getFromAsset("stat_id.json"), HashMap.class);
+ map = (HashMap) JSON.parseObject(getFromAsset(jsonName), HashMap.class);
}
return map;
}
- public String getFromAsset(String fileName){
- String result="";
- try{
+ public String getFromAsset(String fileName) {
+ String result = "";
+ try {
InputStream in = mContext.getResources().getAssets().open(fileName);
int length = in.available();
- byte [] buffer = new byte[length];
+ byte[] buffer = new byte[length];
in.read(buffer);
result = EncodingUtils.getString(buffer, "UTF-8");
- }
- catch(Exception e){
+ } catch (Exception e) {
e.printStackTrace();
}
return result;
}
+
+ class UploadThread extends Thread {
+
+ private Handler mHandler = null;
+
+ @Override
+ public void run() {
+ Looper.prepare();
+
+ mHandler = new Handler(Looper.myLooper()) {
+
+ @Override
+ public void handleMessage(Message msg) {
+
+ if (msg.obj != null && msg.obj instanceof DataBlock) {
+ DataBlock dataBlock = (DataBlock) msg.obj;
+ if (dataBlock.getApp_action().isEmpty() &&
+ dataBlock.getEvent().isEmpty() &&
+ dataBlock.getPage().isEmpty()) {
+ return;
+ }
+ StatLog.d(TAG, "TcStatfacr >> report is Start");
+ TcUpLoadManager.getInstance(mContext).report(JsonUtil.toJSONString(dataBlock));
+ }
+ }
+ };
+ Looper.loop();
+ }
+ }
}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcUpLoadManager.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcUpLoadManager.java
similarity index 73%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcUpLoadManager.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcUpLoadManager.java
index 5e7e1d3..76f745a 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcUpLoadManager.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcUpLoadManager.java
@@ -1,16 +1,33 @@
-package com.tamic.statInterface.statsdk.core;
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.tamic.statinterface.stats.core;
import android.content.Context;
import android.text.TextUtils;
-import com.tamic.statInterface.statsdk.constants.NetConfig;
-import com.tamic.statInterface.statsdk.db.helper.StaticsAgent;
-import com.tamic.statInterface.statsdk.http.TcHttpClient;
-import com.tamic.statInterface.statsdk.service.Platform;
-import com.tamic.statInterface.statsdk.util.JsonUtil;
-import com.tamic.statInterface.statsdk.util.NetworkUtil;
-import com.tamic.statInterface.statsdk.util.StatLog;
+import com.tamic.statinterface.stats.constants.NetConfig;
+import com.tamic.statinterface.stats.db.helper.StaticsAgent;
+import com.tamic.statinterface.stats.http.TcHttpClient;
+import com.tamic.statinterface.stats.service.Platform;
+import com.tamic.statinterface.stats.util.JsonUtil;
+import com.tamic.statinterface.stats.util.NetworkUtil;
+import com.tamic.statinterface.stats.util.StatLog;
import java.util.concurrent.atomic.AtomicReference;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcUploadCoreReceiver.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcUploadCoreReceiver.java
similarity index 56%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcUploadCoreReceiver.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcUploadCoreReceiver.java
index 15c4bf0..785b306 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcUploadCoreReceiver.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/core/TcUploadCoreReceiver.java
@@ -1,11 +1,9 @@
-package com.tamic.statInterface.statsdk.core;
+package com.tamic.statinterface.stats.core;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.text.TextUtils;
import android.util.Log;
-import android.widget.Toast;
/**
*
@@ -22,20 +20,12 @@ public class TcUploadCoreReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.d(TAG, "pollSever is started");
- if (context == null || intent ==null ) {
+ if (context == null || intent == null ) {
return;
}
- if (TextUtils.equals(intent.getAction(), REPORT_ACTION)) {
-
-
- Toast.makeText(context, "send statData", Toast.LENGTH_LONG).show();
-
- //发送数据
-// TcStatSdk.getInstance(context).send(JsonUtil.toJSONString(StaticsAgent.getDataBlock()));
- }
-
-
+ //发送数据
+ TcStatSdk.getInstance(context).send();
}
}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/Customer.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/Customer.java
new file mode 100644
index 0000000..90f8a78
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/Customer.java
@@ -0,0 +1,49 @@
+package com.tamic.statinterface.stats.db;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
+
+/**
+ * Entity mapped to table "CUSTOMER".
+ */
+public class Customer {
+
+ private Long id;
+ /** Not-null value. */
+ private String name;
+
+
+
+ public Customer() {
+ }
+
+ public Customer(Long id) {
+ this.id = id;
+ }
+
+ public Customer(Long id, String name) {
+ this.id = id;
+ this.name = name;
+ }
+
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ /** Not-null value. */
+ public String getName() {
+ return name;
+ }
+
+ /** Not-null value; ensure this value is available before it is saved to the database. */
+ public void setName(String name) {
+ this.name = name;
+ }
+
+
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/TcNote.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/TcNote.java
new file mode 100644
index 0000000..9707a10
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/TcNote.java
@@ -0,0 +1,98 @@
+package com.tamic.statinterface.stats.db;
+
+// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
+
+
+/**
+ * Entity mapped to table "PA_NOTE".
+ */
+public class TcNote {
+
+
+ private Long id;
+ /**
+ * Not-null value.
+ */
+ private String firstCloumn;
+ /**
+ * Not-null value.
+ */
+ private String secondCloumn;
+ /**
+ * Not-null value.
+ */
+ private String thirdCloumn;
+
+ private String forthCloumn;
+
+ private Integer status;
+
+ public static final int DATA_STATUS_SAVED = 0;
+ public static final int DATA_STATUS_SENDING = 1;
+
+ public TcNote() {
+ }
+
+ public TcNote(Long id) {
+ this.id = id;
+ }
+
+
+ public TcNote(Long id, String firstCloumn, String secondCloumn, String thirdCloumn, String forthCloumn, Integer status) {
+ this.id = id;
+ this.firstCloumn = firstCloumn;
+ this.secondCloumn = secondCloumn;
+ this.thirdCloumn = thirdCloumn;
+ this.forthCloumn = forthCloumn;
+ this.status = status;
+ }
+
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getFirstCloumn() {
+ return firstCloumn;
+ }
+
+ public void setFirstCloumn(String firstCloumn) {
+ this.firstCloumn = firstCloumn;
+ }
+
+ public String getSecondCloumn() {
+ return secondCloumn;
+ }
+
+ public void setSecondCloumn(String secondCloumn) {
+ this.secondCloumn = secondCloumn;
+ }
+
+ public String getThirdCloumn() {
+ return thirdCloumn;
+ }
+
+ public void setThirdCloumn(String thirdCloumn) {
+ this.thirdCloumn = thirdCloumn;
+ }
+
+ public String getForthCloumn() {
+ return forthCloumn;
+ }
+
+ public void setForthCloumn(String forthCloumn) {
+ this.forthCloumn = forthCloumn;
+ }
+
+ public Integer getStatus() {
+ return status;
+ }
+
+ public void setStatus(Integer status) {
+ this.status = status;
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/DataAccess.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/DataAccess.java
new file mode 100644
index 0000000..2ad1d9f
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/DataAccess.java
@@ -0,0 +1,77 @@
+/*
+ * DataAccess.java
+ *
+ * Created by: NuLL on 2014-1-9
+ * Copyright (c) 2014年 SAIC. All rights reserved.
+ */
+package com.tamic.statinterface.stats.db.database;
+
+import android.content.Context;
+
+import com.tamic.statinterface.stats.db.TcNote;
+
+import java.util.ArrayList;
+
+/*
+ * 对外接口,数据库访问层,所有的数据库操作都只能通过该类访问
+ */
+public class DataAccess {
+ private static DataBaseHandler handler = null;
+ private static DataAccess access = null;
+
+ private static ReadDataBaseAccess readAccess = null;
+ private static WriteDataBaseAccess writeAccess = null;
+ private static Context appContext;
+
+ public static synchronized DataAccess shareInstance(Context context) {
+ appContext = context;
+ readAccess = ReadDataBaseAccess.shareInstance(appContext);
+ if (access == null) {
+ access = new DataAccess();
+ handler = DataBaseHandler.writeInstance(appContext);
+ writeAccess = WriteDataBaseAccess.shareInstance(appContext);
+ }
+ return access;
+ }
+
+ public void closeDataBase() {
+ handler.close();
+ }
+
+ //创建所有表
+ public void createAllTables() {
+ createNoteTable();
+ createCustomerTable();
+ }
+
+
+ private void createNoteTable() {
+ boolean isCreatedSec = handler.createTableWithSQL("create table if not exists T_Note(_id integer primary key autoincrement,firstcloumn text,secondcloumn text," +
+ "thirdcloumn text,forthcloumn text,STATUS text)");
+ if (!isCreatedSec) {
+ System.out.println("create table T_Note failure!");
+ }
+ }
+
+ private void createCustomerTable() {
+ boolean isCreatedSec = handler.createTableWithSQL("create table if not exists T_Customer(_id integer primary key autoincrement,name text)");
+ if (!isCreatedSec) {
+ System.out.println("create table T_Customer failure!");
+ }
+ }
+
+ //添加接口
+ public boolean insertData(Object obj) {
+ return writeAccess.insertData(obj);
+ }
+
+ //批量插入事件
+ public boolean insertNotes(ArrayList> notes) {
+ return writeAccess.insertDatas(notes);
+ }
+
+ //插入事件
+ public boolean insertNote(TcNote note) {
+ return writeAccess.insertData(note);
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/DataBaseHandler.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/DataBaseHandler.java
new file mode 100644
index 0000000..e6f7af6
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/DataBaseHandler.java
@@ -0,0 +1,135 @@
+/*
+ * DataBaseHandler.java
+ *
+ * Created by: NULL on 2014-1-9
+ * Copyright (c) 2014年 SAIC. All rights reserved.
+ */
+package com.tamic.statinterface.stats.db.database;
+
+
+import java.util.concurrent.locks.ReentrantLock;
+
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteOpenHelper;
+import android.util.Log;
+
+
+/*
+ * 负责和数据库建立连接的类
+ * 负责打开关闭数据库连接
+ * 通过getWritableDatabase()或getReadableDatabase()方法获取和数据库的连接后对数据库进行操作
+ */
+public class DataBaseHandler extends SQLiteOpenHelper {
+ private static final String DB_NAME = "statlog.db";
+ private static final int DB_VERSION = 1;
+
+ private static DataBaseHandler mDataBaseHandler = null;
+ private ReentrantLock lock = null;
+
+ /*
+ * 构造函数
+ *
+ * @param context上下文
+ * @param dbName数据库名
+ * @param dbVersion数据库版本号
+ */
+ protected DataBaseHandler(Context context, String dbName, int dbVersion) {
+ super(context, dbName, null, dbVersion);
+ }
+
+ protected DataBaseHandler(Context context) {
+ this(context, DB_NAME, DB_VERSION);
+ }
+
+ protected DataBaseHandler(Context context, int dbVersion) {
+ this(context, DB_NAME, dbVersion);
+ }
+
+ /*
+ * 读接口
+ */
+ public static DataBaseHandler readInstance(Context context) {
+ return new DataBaseHandler(context);
+ }
+
+ /*
+ * 写接口
+ */
+ public static synchronized DataBaseHandler writeInstance(Context context) {
+ if (mDataBaseHandler == null) {
+ mDataBaseHandler = new DataBaseHandler(context);
+ }
+ return mDataBaseHandler;
+ }
+
+ @Override
+ public void onCreate(SQLiteDatabase db) {
+ // TODO Auto-generated method stub
+ /*db.execSQL();*/
+ }
+
+ @Override
+ public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
+ // TODO Auto-generated method stub
+ }
+
+ // 获得和数据库的连接对象
+ // getWritableDatabase和getReadableDatabase会自动创建数据库打开并获取其引用
+ public SQLiteDatabase getReadConnection(String methodName) {
+ Log.e("dblog", methodName + " read begin");
+ SQLiteDatabase connection = null;
+ try {
+ connection = getReadableDatabase();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ Log.e("dblog", methodName + " read end");
+ return connection;
+ }
+
+ public synchronized SQLiteDatabase getWriteConnection(String methodName) {
+ Log.e("dblog", methodName + " write begin");
+ if (lock == null)
+ lock = new ReentrantLock();
+ lock.lock();
+ SQLiteDatabase connection = null;
+ try {
+ connection = getWritableDatabase();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ Log.e("dblog", methodName + " write end");
+ return connection;
+ }
+
+ // 关闭用完的数据库连接
+ public void closeConnection(SQLiteDatabase connection, String methodName) {
+ Log.e("dblog", methodName + " close begin");
+ if (connection.isOpen()) {
+ connection.close();
+ }
+ if (lock != null)
+ lock.unlock();
+ Log.e("dblog", methodName + " close end");
+ }
+
+ // 关闭数据库
+ public void close() {
+ super.close();
+ }
+
+ public boolean createTableWithSQL(String sql) {
+ boolean result = false;
+ SQLiteDatabase db = getWriteConnection("createTableWithSQL");
+ if (db != null) {
+ db.execSQL(sql);
+ result = true;
+ } else {
+ result = false;
+ }
+ closeConnection(db, "createTableWithSQL");
+ return result;
+ }
+
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/ReadDataBaseAccess.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/ReadDataBaseAccess.java
new file mode 100644
index 0000000..e073a49
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/ReadDataBaseAccess.java
@@ -0,0 +1,71 @@
+/*
+ * ReadDataBaseAccess.java
+ *
+ * Created by: NULL on 2014-1-9
+ * Copyright (c) 2014年 SAIC. All rights reserved.
+ */
+package com.tamic.statinterface.stats.db.database;
+
+import android.content.Context;
+import android.database.Cursor;
+import android.database.sqlite.SQLiteDatabase;
+
+import com.tamic.statinterface.stats.db.TcNote;
+
+import java.util.ArrayList;
+
+
+public class ReadDataBaseAccess {
+ private DataBaseHandler handler = null;
+ private static ReadDataBaseAccess readAccess = null;
+ private static boolean isConnectionBusy = false;
+
+ protected ReadDataBaseAccess(Context context) {
+ handler = DataBaseHandler.readInstance(context);
+ }
+
+ public static synchronized ReadDataBaseAccess shareInstance(Context context) {
+ readAccess = new ReadDataBaseAccess(context);
+ return readAccess;
+ }
+
+
+ //查询所有的note
+ public ArrayList loadAll() {
+ SQLiteDatabase connection = handler.getReadConnection(Thread.currentThread().getStackTrace()[2].getMethodName());
+ Cursor cursor = connection.rawQuery("select * from T_Note", null);
+ ArrayList notes = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ TcNote note = new TcNote();
+ note.setFirstCloumn(cursor.getString(1));
+ note.setSecondCloumn(cursor.getString(2));
+ note.setThirdCloumn(cursor.getString(3));
+ note.setForthCloumn(cursor.getString(4));
+ note.setStatus((int) cursor.getLong(5));
+ notes.add(note);
+ }
+ cursor.close();
+ handler.closeConnection(connection, Thread.currentThread().getStackTrace()[2].getMethodName());
+ return notes;
+ }
+
+
+ //查询所有的note
+ public ArrayList loadAllByWhere(String filter) {
+ SQLiteDatabase connection = handler.getReadConnection(Thread.currentThread().getStackTrace()[2].getMethodName());
+ Cursor cursor = connection.rawQuery("select * from T_Note where " + filter, null);
+ ArrayList notes = new ArrayList<>();
+ while (cursor.moveToNext()) {
+ TcNote note = new TcNote();
+ note.setFirstCloumn(cursor.getString(1));
+ note.setSecondCloumn(cursor.getString(2));
+ note.setThirdCloumn(cursor.getString(3));
+ note.setForthCloumn(cursor.getString(4));
+ note.setStatus((int) cursor.getLong(5));
+ notes.add(note);
+ }
+ cursor.close();
+ handler.closeConnection(connection, Thread.currentThread().getStackTrace()[2].getMethodName());
+ return notes;
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/WriteDataBaseAccess.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/WriteDataBaseAccess.java
new file mode 100644
index 0000000..430a932
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/database/WriteDataBaseAccess.java
@@ -0,0 +1,125 @@
+/*
+ * WriteDataBaseAccess.java
+ *
+ * Created by: NULL on 2014-1-9
+ * Copyright (c) 2014年 SAIC. All rights reserved.
+ */
+package com.tamic.statinterface.stats.db.database;
+
+import android.content.ContentValues;
+import android.content.Context;
+import android.database.sqlite.SQLiteDatabase;
+import android.database.sqlite.SQLiteStatement;
+
+import com.tamic.statinterface.stats.db.TcNote;
+
+import java.util.ArrayList;
+
+public class WriteDataBaseAccess {
+ private DataBaseHandler handler = null;
+ private static WriteDataBaseAccess writeAccess = null;
+ private Context context;
+
+ public WriteDataBaseAccess(Context context) {
+ handler = DataBaseHandler.writeInstance(context);
+ this.context = context;
+ }
+
+ public static WriteDataBaseAccess shareInstance(Context context) {
+ if (writeAccess == null) {
+ writeAccess = new WriteDataBaseAccess(context);
+ }
+ return writeAccess;
+ }
+
+ /**
+ * execSQL
+ */
+ public void execSQL(String sql){
+ SQLiteDatabase connection = handler.getWriteConnection(Thread.currentThread().getStackTrace()[2].getMethodName());
+ connection.execSQL(sql);
+ connection.close();
+ }
+
+ /**
+ * 数据库插入相关接口
+ */
+ //添加接口
+ public boolean insertData(Object obj) {
+ if (obj instanceof TcNote) {
+ return insertNote((TcNote) obj);
+ } else {
+ System.out.println("Unknown object!");
+ return false;
+ }
+ }
+
+
+ private boolean insertNote(TcNote note) {
+ ContentValues values = new ContentValues();
+ values.put("firstcloumn", note.getFirstCloumn());
+ values.put("secondCloumn", note.getSecondCloumn());
+ values.put("thirdCloumn", note.getThirdCloumn());
+ values.put("forthCloumn", note.getForthCloumn());
+ values.put("STATUS", note.getStatus());
+ SQLiteDatabase connection = handler.getWriteConnection(Thread.currentThread().getStackTrace()[2].getMethodName());
+ long result = connection.insert("T_Note", null, values);
+ if (!connection.inTransaction()) {
+ handler.closeConnection(connection, Thread.currentThread().getStackTrace()[2].getMethodName());
+ }
+ return (result != -1);
+ }
+
+ //批量添加接口
+ public boolean insertDatas(ArrayList> list) {
+ if (list.isEmpty()) {
+ System.out.println("no datas");
+ return false;
+ } else {
+ if (list.get(0) instanceof TcNote) {
+ return insertTcNotes(list);
+ } else {
+ System.out.println("Unknown object!");
+ return false;
+ }
+ }
+ }
+
+ private boolean insertTcNotes(ArrayList> notes) {
+ boolean result = false;
+ SQLiteDatabase connection = handler.getWriteConnection(Thread.currentThread().getStackTrace()[2].getMethodName());
+ String sql = "insert into T_Note (firstCloumn,secondCloumn,thirdCloumn,forthCloumn,fiveCloumn) values (?,?,?,?,?)";
+ connection.beginTransaction();
+ try {
+ SQLiteStatement stmt = connection.compileStatement(sql);
+ for (int i = 0; i < notes.size(); i++) {
+ TcNote note = (TcNote) notes.get(i);
+ stmt.bindString(1, note.getFirstCloumn());
+ stmt.bindString(2, note.getSecondCloumn());
+ stmt.bindString(3, note.getThirdCloumn());
+ stmt.bindString(4, note.getForthCloumn());
+ stmt.bindLong(4, note.getStatus());
+ stmt.execute();
+ stmt.clearBindings();
+ }
+ connection.setTransactionSuccessful();
+ result = true;
+ } catch (Exception e) {
+ e.printStackTrace();
+ result = false;
+ } finally {
+ connection.endTransaction();
+ handler.closeConnection(connection, Thread.currentThread().getStackTrace()[2].getMethodName());
+ }
+ return result;
+ }
+
+ public boolean deleteAllNote() {
+ SQLiteDatabase connection = handler.getWriteConnection(Thread.currentThread().getStackTrace()[2].getMethodName());
+ int result = connection.delete("T_Note", "1=?", new String[]{"1"});
+ if (!connection.inTransaction()) {
+ handler.closeConnection(connection, Thread.currentThread().getStackTrace()[2].getMethodName());
+ }
+ return result != -1;
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/DataConstruct.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/DataConstruct.java
new file mode 100644
index 0000000..1b9c068
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/DataConstruct.java
@@ -0,0 +1,222 @@
+package com.tamic.statinterface.stats.db.helper;
+
+import android.content.Context;
+import android.text.TextUtils;
+
+import com.tamic.statinterface.stats.core.StaticsListener;
+import com.tamic.statinterface.stats.model.AppAction;
+import com.tamic.statinterface.stats.model.Event;
+import com.tamic.statinterface.stats.model.KeyValueBean;
+import com.tamic.statinterface.stats.model.Page;
+import com.tamic.statinterface.stats.sp.SharedPreferencesHelper;
+import com.tamic.statinterface.stats.util.DateUtil;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.concurrent.ConcurrentSkipListMap;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * Created by Tamic on 2016-04-11.
+ */
+public class DataConstruct {
+
+ private static Event event = null;
+ private static CopyOnWriteArrayList parameter = new CopyOnWriteArrayList<>();
+ private static ConcurrentSkipListMap events = new ConcurrentSkipListMap<>();
+ private static Page page = null;
+ private static ArrayList pageParameter = new ArrayList<>();
+ private static AppAction appAction = null;
+ private static StaticsListener staticsListener;
+ private static String pageId;
+ private static String referPageId;
+ private static String REFERPAGE_ID = "referPage_Id";
+
+ private DataConstruct() {
+ }
+
+ /**
+ * initEvent
+ *
+ * @param event_name
+ */
+ public static void initEvent(String event_name) {
+ initEvent(event_name, null);
+ }
+
+ /**
+ * initEvent 带参数的事件
+ * @param eventName 事件ID
+ * @param parameters 事件参数(k-v)
+ */
+ public static synchronized void initEvent(String eventName, Map parameters) {
+
+ if (TextUtils.isEmpty(eventName)) {
+ throw new RuntimeException("you must set eventName!");
+ }
+
+ Event event = new Event();
+ event.setPage_id(pageId);
+ event.setReferer_page_id(referPageId);
+ event.setEvent_name(eventName);
+ event.setAction_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+
+ if (parameters !=null && !parameters.isEmpty() && parameters.size() > 0) {
+ CopyOnWriteArrayList parameter = new CopyOnWriteArrayList<>();
+
+ Iterator keys = parameters.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = keys.next();
+ if (parameters.get(key) != null) {
+ parameter.add(new KeyValueBean(key, parameters.get(key)));
+ }
+ }
+ if (!parameter.isEmpty()) {
+ event.setParameter(parameter);
+ }
+ }
+ storeEvent(event);
+ }
+
+ /**
+ * onEvent parameter 自定义业务类型统计 k-v
+ *
+ * @param businessName
+ * @param businessValue
+ */
+ public static void onEvent(String businessName, String businessValue) {
+ if (TextUtils.isEmpty(businessName) || TextUtils.isEmpty(businessValue)) {
+ return;
+ }
+ parameter.add(new KeyValueBean(businessName, businessValue));
+ if (event == null || event.getEvent_name().isEmpty()) {
+ throw new RuntimeException("you must call initEvent before onEvent!");
+ }
+ event.setParameter(parameter);
+ events.put(event.getEvent_name(), event);
+ parameter.clear();
+ }
+
+
+
+ /**
+ * initPage
+ *
+ * @param eventInterface
+ */
+ public static void initPage(Context context, StaticsListener eventInterface, String page_Id, String referPage_Id) {
+ staticsListener = eventInterface;
+ pageId = page_Id;
+ if (TextUtils.isEmpty(referPage_Id)) {
+ referPageId = getReferPageId(context);
+ } else {
+ referPageId = referPage_Id;
+ }
+ recardPageId(context, page_Id);
+ page = new Page();
+ page.setPage_start_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ page.setReferer_page_id(referPageId);
+ page.setPage_id(pageId);
+ pageParameter.clear();
+ }
+
+
+ public static void initPageParameter(String name, String value) {
+ if (TextUtils.isEmpty(name) || TextUtils.isEmpty(value)) {
+ return;
+ }
+ if (page == null) {
+ return;
+ }
+ pageParameter.add(new KeyValueBean(name, value));
+ page.setParameter(pageParameter);
+ }
+
+
+ /**
+ * storePage
+ */
+ public static void storePage() {
+ if (page == null) {
+ throw new RuntimeException("you must init before storePage");
+ }
+ page.setPage_end_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ StaticsAgent.storeObject(page);
+ }
+
+
+ /**
+ * storeAppAction
+ *
+ * @param type 1 app打开 2app关闭 3唤醒
+ */
+ public static void storeAppAction(String type) {
+ appAction = new AppAction();
+ appAction.setAction_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
+ appAction.setApp_action_type(type);
+ StaticsAgent.storeObject(appAction);
+ appAction = null;
+ }
+
+ /**
+ * storeEvent
+ *you need store to call this
+ */
+ private static synchronized void storeEvent(Event event) {
+ if (event == null) {
+ return;
+ }
+ StaticsAgent.storeObject(event);
+ }
+
+ /**
+ * storeEvent
+ * Activity destory call
+ */
+ public static synchronized void storeEvents() {
+ if (events == null || events.size() == 0) {
+ return;
+ }
+ if (events.size() > 0) {
+ Iterator keys = events.keySet().iterator();
+ while (keys.hasNext()) {
+ String key = keys.next();
+ StaticsAgent.storeObject(events.get(key));
+ }
+ }
+ event = null;
+ events.clear();
+
+ }
+
+
+
+ /**
+ deleteData
+ */
+ public static void deleteData() {
+ StaticsAgent.deleteData();
+ }
+
+ /**
+ * recardPageId
+ *
+ * @param context
+ * @param page_Id
+ */
+ private static void recardPageId(Context context, String page_Id) {
+ SharedPreferencesHelper.getInstance(context).putString(REFERPAGE_ID, page_Id);
+ }
+
+ /**
+ * get ReferPageId
+ *
+ * @param context
+ * @return
+ */
+ private static String getReferPageId(Context context) {
+ return SharedPreferencesHelper.getInstance(context).getString(REFERPAGE_ID);
+ }
+
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/NoteDaoHelper.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/NoteDaoHelper.java
new file mode 100644
index 0000000..2a60051
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/NoteDaoHelper.java
@@ -0,0 +1,56 @@
+package com.tamic.statinterface.stats.db.helper;
+
+import android.content.Context;
+
+
+import com.tamic.statinterface.stats.db.TcNote;
+import com.tamic.statinterface.stats.db.database.DataAccess;
+import com.tamic.statinterface.stats.db.database.ReadDataBaseAccess;
+import com.tamic.statinterface.stats.db.database.WriteDataBaseAccess;
+
+import java.util.List;
+
+
+public class NoteDaoHelper {
+
+ String TABLENAME = "T_Note";
+
+ private TcNote paNoteDao;
+ private Context context;
+
+ public NoteDaoHelper(Context context) {
+ this.context = context;
+ DataAccess.shareInstance(context).createAllTables();
+ /*if (paNoteDao == null) {
+ paNoteDao = getDaoSession(context).getPaNoteDao();
+ }*/
+ }
+
+ public List getUnSendNotes() {
+ //return paNoteDao.queryRaw("where STATUS = 0");
+ return ReadDataBaseAccess.shareInstance(context).loadAllByWhere("STATUS = 0");
+ }
+
+ public void updateStatus(int from, int to) {
+ String sql = "UPDATE '" + TABLENAME + "' SET STATUS=" + to + " WHERE STATUS=" + from;
+ WriteDataBaseAccess.shareInstance(context).execSQL(sql);
+
+ }
+
+ public void deleteByStatus(int status) {
+ String sql = "DELETE FROM '" + TABLENAME + "' WHERE STATUS=" + status;
+ WriteDataBaseAccess.shareInstance(context).execSQL(sql);
+ }
+
+ public void insert(TcNote note) {
+ //paNoteDao.insert(note);
+ WriteDataBaseAccess.shareInstance(context).insertData(note);
+ }
+
+ public void insertList(List notes) {
+ WriteDataBaseAccess.shareInstance(context).insertData(notes);
+ //paNoteDao.insertInTx(notes);
+ }
+
+
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/StaticsAgent.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/StaticsAgent.java
new file mode 100644
index 0000000..8a93140
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/db/helper/StaticsAgent.java
@@ -0,0 +1,301 @@
+package com.tamic.statinterface.stats.db.helper;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.text.TextUtils;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.tamic.statinterface.stats.db.TcNote;
+import com.tamic.statinterface.stats.db.database.ReadDataBaseAccess;
+import com.tamic.statinterface.stats.db.database.WriteDataBaseAccess;
+import com.tamic.statinterface.stats.model.AppAction;
+import com.tamic.statinterface.stats.model.DataBlock;
+import com.tamic.statinterface.stats.model.Event;
+import com.tamic.statinterface.stats.model.ExceptionInfo;
+import com.tamic.statinterface.stats.model.Page;
+import com.tamic.statinterface.stats.util.JsonUtil;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+/**
+ * Created by Tamic on 2016-03-17.
+ */
+public class StaticsAgent {
+
+ private static Context mContext;
+ private static TcNote note;
+ private static NoteDaoHelper helper;
+ private static DaoThread daoThread;
+
+ private static final int MSG_TYPE_LOAD = 1;
+ private static final int MSG_TYPE_INSERT = 2;
+ private static final int MSG_TYPE_ROLL_BACK = 3;
+ private static final int MSG_TYPE_DELETE = 4;
+ private static final int MSG_TYPE_INSERT_NOW = 5;
+ /* */
+
+ /**
+ * @param context
+ *//*
+ public static void init(Context context) {
+
+ mContext = context;
+
+ DataAccess.shareInstance(context).createAllTables();
+
+ }*/
+ public static void init(Context context) {
+ mContext = context;
+ if (helper == null) {
+ helper = new NoteDaoHelper(context);
+ }
+
+ if (daoThread == null) {
+ daoThread = new DaoThread();
+ daoThread.start();
+ }
+ }
+
+ private static void storeAppAction(String appAction) {
+ if (!TextUtils.isEmpty(appAction)) {
+ storePaData(appAction, "", "");
+ }
+ }
+
+ private static void storePage(String pageString) {
+ if (!TextUtils.isEmpty(pageString)) {
+ storePaData("", pageString, "");
+ }
+ }
+
+ private static void storeEvent(String eventString) {
+ if (!TextUtils.isEmpty(eventString)) {
+ storePaData("", "", eventString);
+ }
+ }
+
+ public static void getDataBlock(Handler dataHandler) {
+ Message msg = new Message();
+ msg.what = MSG_TYPE_LOAD;
+ msg.obj = dataHandler;
+ daoThread.mHandler.sendMessage(msg);
+ }
+
+
+
+ public static DataBlock getDataBlock() {
+ DataBlock dataBlock = new DataBlock();
+ List list = ReadDataBaseAccess.shareInstance(mContext).loadAll();
+ AppAction appAction = new AppAction();
+ Page page = new Page();
+ Event event = new Event();
+ ExceptionInfo exceptionInfo = new ExceptionInfo();
+ List actionList = new ArrayList<>();
+ List pageList = new ArrayList<>();
+ List eventList = new ArrayList<>();
+ List exceptionInfos = new ArrayList<>();
+ for (int i = 0; i < list.size(); i++) {
+ if (!TextUtils.isEmpty(list.get(i).getFirstCloumn())) {
+ appAction = JsonUtil.parseObject(list.get(i).getFirstCloumn(), AppAction.class);
+ actionList.add(appAction);
+ }
+ if (!TextUtils.isEmpty(list.get(i).getSecondCloumn())) {
+ page = JsonUtil.parseObject(list.get(i).getSecondCloumn(), Page.class);
+ pageList.add(page);
+ }
+ if (!TextUtils.isEmpty(list.get(i).getThirdCloumn())) {
+ event = JsonUtil.parseObject(list.get(i).getThirdCloumn(), Event.class);
+ eventList.add(event);
+ }
+ if (!TextUtils.isEmpty(list.get(i).getForthCloumn())) {
+ exceptionInfo = JsonUtil.parseObject(list.get(i).getForthCloumn(), ExceptionInfo.class);
+ exceptionInfos.add(exceptionInfo);
+ }
+ }
+ dataBlock.setApp_action(actionList);
+ dataBlock.setPage(pageList);
+ dataBlock.setExceptionInfos(exceptionInfos);
+ dataBlock.setEvent(eventList);
+ return dataBlock;
+ }
+
+ public static void storeData(String firstcloumn, String secondcloumn, String thirdcloumn) {
+ storeData(firstcloumn, secondcloumn, thirdcloumn, null);
+ }
+
+
+ public static void storeData(String firstcloumn, String secondcloumn, String thirdcloumn, String forthCloumn) {
+ note = new TcNote(null, firstcloumn, secondcloumn, thirdcloumn, forthCloumn, TcNote.DATA_STATUS_SAVED);
+ WriteDataBaseAccess.shareInstance(mContext).insertData(note);
+ }
+
+ private static void storePaData(String appAction, String pageInfo, String eventInfo) {
+ Message msg = new Message();
+ msg.what = appAction == null ? MSG_TYPE_INSERT : MSG_TYPE_INSERT_NOW;
+ msg.obj = new TcNote(null, appAction, pageInfo, eventInfo, null, TcNote.DATA_STATUS_SAVED);
+ daoThread.mHandler.sendMessage(msg);
+ }
+
+
+ /**
+ * storePage
+ *
+ * @param exceptionInfo
+ */
+ public static void storeException(String exceptionInfo) {
+ if (TextUtils.isEmpty(exceptionInfo)) {
+ throw new NullPointerException("exceptionInfo is null");
+ }
+ storeData("", "", "", exceptionInfo);
+ }
+
+
+ /**
+ * storeObject
+ *
+ * @param o
+ */
+ public static void storeObject(Object o) {
+ if (o instanceof Event) {
+ storeEvent(JSONObject.toJSONString(o));
+ } else if (o instanceof AppAction) {
+ storeAppAction(JSONObject.toJSONString(o));
+ } else if (o instanceof Page) {
+ storePage(JSONObject.toJSONString(o));
+ } else if (o instanceof ExceptionInfo) {
+ storeException(JSONObject.toJSONString(o));
+ }
+
+ }
+
+ public static synchronized void deleteData() {
+ WriteDataBaseAccess.shareInstance(mContext).deleteAllNote();
+ }
+
+ private static class DaoThread extends Thread {
+
+ private Handler mHandler = null;
+ private List notesBuffer = new ArrayList<>();
+ private static final int BUFFER_MAX_SIZE = 10;
+
+ @Override
+ public void run() {
+ Looper.prepare();
+
+ mHandler = new Handler(Looper.myLooper()) {
+
+ @Override
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ case MSG_TYPE_DELETE: {
+ helper.deleteByStatus(TcNote.DATA_STATUS_SENDING);
+ }
+ break;
+
+ case MSG_TYPE_ROLL_BACK: {
+ helper.updateStatus(TcNote.DATA_STATUS_SENDING, TcNote.DATA_STATUS_SAVED);
+ }
+ break;
+ case MSG_TYPE_INSERT: {
+ if (msg.obj != null && msg.obj instanceof TcNote) {
+ TcNote note = (TcNote) msg.obj;
+ notesBuffer.add(note);
+ if (notesBuffer.size() >= BUFFER_MAX_SIZE) {
+ helper.insertList(notesBuffer);
+ notesBuffer.clear();
+ }
+ }
+ }
+ break;
+
+ case MSG_TYPE_INSERT_NOW: {
+ if (msg.obj != null && msg.obj instanceof TcNote) {
+ TcNote note = (TcNote) msg.obj;
+ notesBuffer.add(note);
+ helper.insertList(notesBuffer);
+ notesBuffer.clear();
+ }
+ }
+ break;
+
+ case MSG_TYPE_LOAD: {
+ if (notesBuffer.size() > 0) {
+ helper.insertList(notesBuffer);
+ notesBuffer.clear();
+ }
+ DataBlock dataBlock = new DataBlock();
+ List list = helper.getUnSendNotes();
+ if (list != null) {
+ helper.updateStatus(TcNote.DATA_STATUS_SAVED, TcNote.DATA_STATUS_SENDING);
+ }
+
+ AppAction action;
+ Page page;
+ Event event;
+ ExceptionInfo exceptionInfo;
+ List actionList = new ArrayList<>();
+ List pageList = new ArrayList<>();
+ List eventList = new ArrayList<>();
+ List exceptionInfos = new ArrayList<>();
+ for (int i = 0; list != null && i < list.size(); i++) {
+ if (!TextUtils.isEmpty(list.get(i).getFirstCloumn())) {
+ action = JSON.parseObject(list.get(i).getFirstCloumn(), AppAction.class);
+ actionList.add(action);
+ }
+ if (!TextUtils.isEmpty(list.get(i).getSecondCloumn())) {
+ page = JSON.parseObject(list.get(i).getSecondCloumn(), Page.class);
+ pageList.add(page);
+ }
+ if (!TextUtils.isEmpty(list.get(i).getThirdCloumn())) {
+ event = JSON.parseObject(list.get(i).getThirdCloumn(), Event.class);
+ eventList.add(event);
+ }
+ if (!TextUtils.isEmpty(list.get(i).getForthCloumn())) {
+ exceptionInfo = JSON.parseObject(list.get(i).getForthCloumn(), ExceptionInfo.class);
+ exceptionInfos.add(exceptionInfo);
+ }
+ }
+ Collections.sort(pageList, new Comparator() {
+
+ @Override
+ public int compare(Page lhs, Page rhs) {
+ return lhs.getPage_start_time().compareTo(rhs.getPage_start_time());
+ }
+ });
+ Collections.sort(eventList, new Comparator() {
+
+ @Override
+ public int compare(Event lhs, Event rhs) {
+ return lhs.getAction_time().compareTo(rhs.getAction_time());
+ }
+ });
+ dataBlock.setApp_action(actionList);
+ dataBlock.setPage(pageList);
+ dataBlock.setEvent(eventList);
+ dataBlock.setExceptionInfos(exceptionInfos);
+
+ if (msg.obj != null && msg.obj instanceof Handler) {
+ Handler handler = (Handler) msg.obj;
+ Message msgBack = new Message();
+ msgBack.what = 0;
+ msgBack.obj = dataBlock;
+ handler.sendMessage(msgBack);
+ }
+
+ }
+ break;
+ }
+ super.handleMessage(msg);
+ }
+ };
+ Looper.loop();
+ }
+ }
+}
+
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/http/TcHttpClient.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/http/TcHttpClient.java
similarity index 68%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/http/TcHttpClient.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/http/TcHttpClient.java
index dacd28b..2e8cfae 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/http/TcHttpClient.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/http/TcHttpClient.java
@@ -1,4 +1,21 @@
-package com.tamic.statInterface.statsdk.http;
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.tamic.statinterface.stats.http;
import android.content.Context;
@@ -7,7 +24,7 @@
import cz.msebera.android.httpclient.Header;
/**
- * Created by LIUYONGKUI726 on 2016-05-26.
+ * Created by Tamic on 2016-05-26.
*/
public class TcHttpClient {
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/AppAction.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/AppAction.java
similarity index 91%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/AppAction.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/AppAction.java
index af3241a..0316b87 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/AppAction.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/AppAction.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
/**
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/AppActionList.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/AppActionList.java
similarity index 86%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/AppActionList.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/AppActionList.java
index e1bc724..a96e76c 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/AppActionList.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/AppActionList.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/model/DataBlock.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/DataBlock.java
new file mode 100644
index 0000000..6d69b32
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/DataBlock.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2016 Tamic
+ *
+ * link :https://github.com/Tamicer
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.tamic.statinterface.stats.model;
+
+
+import java.util.List;
+
+/**
+ * 上传数据对象bean
+ * Created by tamic on 2016-03-24.
+ */
+public class DataBlock {
+ private List app_action ;
+ private List page ;
+ private List event ;
+ private ListexceptionInfos;
+
+
+ public List getExceptionInfos() {
+ return exceptionInfos;
+ }
+
+ public void setExceptionInfos(List exceptionInfos) {
+ this.exceptionInfos = exceptionInfos;
+ }
+
+ public List getApp_action() {
+ return app_action;
+ }
+
+ public void setApp_action(List app_action) {
+ this.app_action = app_action;
+ }
+
+ public List getPage() {
+ return page;
+ }
+
+ public void setPage(List page) {
+ this.page = page;
+ }
+
+ public List getEvent() {
+ return event;
+ }
+
+ public void setEvent(List event) {
+ this.event = event;
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/Event.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/Event.java
similarity index 96%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/Event.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/Event.java
index 1f868ff..6a3e2e6 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/Event.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/Event.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/EventList.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/EventList.java
similarity index 86%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/EventList.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/EventList.java
index 8e8890a..410d043 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/EventList.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/EventList.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/stats/model/ExceptionInfo.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/ExceptionInfo.java
new file mode 100644
index 0000000..384fc31
--- /dev/null
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/ExceptionInfo.java
@@ -0,0 +1,55 @@
+package com.tamic.statinterface.stats.model;
+
+/**
+ * Created by null on 2016/9/22.
+ */
+public class ExceptionInfo {
+ private String phoneModel;
+ private String systemModel;
+ private String systemVersion;
+ private String exceptionString;
+
+
+ public ExceptionInfo() {
+
+ }
+
+ public ExceptionInfo(String phoneModel, String systemModel, String systemVersion, String exceptionString) {
+ this.phoneModel = phoneModel;
+ this.systemModel = systemModel;
+ this.systemVersion = systemVersion;
+ this.exceptionString = exceptionString;
+ }
+
+ public String getPhoneModel() {
+ return phoneModel;
+ }
+
+ public void setPhoneModel(String phoneModel) {
+ this.phoneModel = phoneModel;
+ }
+
+ public String getSystemModel() {
+ return systemModel;
+ }
+
+ public void setSystemModel(String systemModel) {
+ this.systemModel = systemModel;
+ }
+
+ public String getSystemVersion() {
+ return systemVersion;
+ }
+
+ public void setSystemVersion(String systemVersion) {
+ this.systemVersion = systemVersion;
+ }
+
+ public String getExceptionString() {
+ return exceptionString;
+ }
+
+ public void setExceptionString(String exceptionString) {
+ this.exceptionString = exceptionString;
+ }
+}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/KeyValueBean.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/KeyValueBean.java
similarity index 94%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/KeyValueBean.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/KeyValueBean.java
index 49a8075..641e8c3 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/KeyValueBean.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/KeyValueBean.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
/**
*业务对应的key-value
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/Page.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/Page.java
similarity index 96%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/Page.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/Page.java
index b106d37..4852616 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/Page.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/Page.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/PageList.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/PageList.java
similarity index 86%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/PageList.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/PageList.java
index 722caf4..0fd7a28 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/PageList.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/PageList.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/ParamterList.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/ParamterList.java
similarity index 87%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/ParamterList.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/ParamterList.java
index 9b89b85..f38fe68 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/ParamterList.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/ParamterList.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model;
+package com.tamic.statinterface.stats.model;
import java.util.List;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/AppInfo.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/AppInfo.java
similarity index 95%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/AppInfo.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/AppInfo.java
index 1a05635..87f72bb 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/AppInfo.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/AppInfo.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model.header;
+package com.tamic.statinterface.stats.model.header;
/**
* Created by Tamic on 2016-03-24.
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/DeviceInfo.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/DeviceInfo.java
similarity index 97%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/DeviceInfo.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/DeviceInfo.java
index 0f11bec..ca7968f 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/DeviceInfo.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/DeviceInfo.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model.header;
+package com.tamic.statinterface.stats.model.header;
/**
* Created by Tamic on 2016-03-24.
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/HeaderInfo.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/HeaderInfo.java
similarity index 94%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/HeaderInfo.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/HeaderInfo.java
index a36977e..cc0ba2d 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/HeaderInfo.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/HeaderInfo.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model.header;
+package com.tamic.statinterface.stats.model.header;
/**
* Created by Tamic on 2016-04-06.
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/NetworkInfo.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/NetworkInfo.java
similarity index 95%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/NetworkInfo.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/NetworkInfo.java
index d790961..bc2c397 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/header/NetworkInfo.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/model/header/NetworkInfo.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.model.header;
+package com.tamic.statinterface.stats.model.header;
/**
* NetworkInfo
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcDeblockObserver.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcDeblockObserver.java
similarity index 90%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcDeblockObserver.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcDeblockObserver.java
index 276a0cd..11fa1dd 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcDeblockObserver.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcDeblockObserver.java
@@ -1,14 +1,14 @@
-package com.tamic.statInterface.statsdk.presenter;
+package com.tamic.statinterface.stats.presenter;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
-import com.tamic.statInterface.statsdk.core.TcIntentManager;
-import com.tamic.statInterface.statsdk.util.StatLog;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
+import com.tamic.statinterface.stats.core.TcIntentManager;
+import com.tamic.statinterface.stats.util.StatLog;
/**
* DeblockObserver
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcNetworkObserver.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcNetworkObserver.java
similarity index 96%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcNetworkObserver.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcNetworkObserver.java
index f90e864..3edb1ed 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcNetworkObserver.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcNetworkObserver.java
@@ -1,5 +1,5 @@
-package com.tamic.statInterface.statsdk.presenter;
+package com.tamic.statinterface.stats.presenter;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -10,7 +10,7 @@
import android.text.TextUtils;
import android.util.Log;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
/**
* NetworkObserver
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcScreenObserver.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcScreenObserver.java
similarity index 93%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcScreenObserver.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcScreenObserver.java
index 747ec0e..03ce49e 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/presenter/TcScreenObserver.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/presenter/TcScreenObserver.java
@@ -11,7 +11,7 @@
* ------------------------------------------------------------------
* 2013-1-6 CoCoMo 1.0 1.0 Version
*/
-package com.tamic.statInterface.statsdk.presenter;
+package com.tamic.statinterface.stats.presenter;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -20,8 +20,8 @@
import android.os.PowerManager;
import android.util.Log;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
-import com.tamic.statInterface.statsdk.core.TcIntentManager;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
+import com.tamic.statinterface.stats.core.TcIntentManager;
/**
* ScreenObserver
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/Platform.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/service/Platform.java
similarity index 94%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/Platform.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/service/Platform.java
index c09acaa..bd92eb5 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/Platform.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/service/Platform.java
@@ -13,13 +13,11 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.tamic.statInterface.statsdk.service;
+package com.tamic.statinterface.stats.service;
import android.os.Build;
import android.util.Log;
-import com.tamic.statInterface.statsdk.core.TcNetEngine;
-
import java.util.concurrent.Executor;
/**
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/PriorityThreadFactory.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/service/PriorityThreadFactory.java
similarity index 94%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/PriorityThreadFactory.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/service/PriorityThreadFactory.java
index fdfa843..936d2fc 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/PriorityThreadFactory.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/service/PriorityThreadFactory.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.service;
+package com.tamic.statinterface.stats.service;
import android.os.Process;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/TcHandleThreadPool.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/service/TcHandleThreadPool.java
similarity index 89%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/TcHandleThreadPool.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/service/TcHandleThreadPool.java
index 96ec4ac..2062d26 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/service/TcHandleThreadPool.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/service/TcHandleThreadPool.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.service;
+package com.tamic.statinterface.stats.service;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.Executor;
@@ -16,7 +16,7 @@ public class TcHandleThreadPool {
private final static int MAX_POOL_SIZE = 6;
private final static int KEEP_ALIVE_TIME = 4;
private final Executor mExecutor;
- private final static String THREAD_NAME ="paf-stat-thread-pool";
+ private final static String THREAD_NAME ="tamic-stat-thread-pool";
public TcHandleThreadPool() {
ThreadFactory factory = new PriorityThreadFactory(THREAD_NAME, android.os.Process.THREAD_PRIORITY_BACKGROUND);
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/sp/SharedPreferencesHelper.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/sp/SharedPreferencesHelper.java
similarity index 98%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/sp/SharedPreferencesHelper.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/sp/SharedPreferencesHelper.java
index 0ae0600..69e21d6 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/sp/SharedPreferencesHelper.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/sp/SharedPreferencesHelper.java
@@ -1,10 +1,10 @@
-package com.tamic.statInterface.statsdk.sp;
+package com.tamic.statinterface.stats.sp;
import android.content.Context;
import android.content.SharedPreferences;
-import com.tamic.statInterface.statsdk.util.JsonUtil;
+import com.tamic.statinterface.stats.util.JsonUtil;
import org.json.JSONArray;
import org.json.JSONException;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/DateUtil.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/DateUtil.java
similarity index 93%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/DateUtil.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/util/DateUtil.java
index 27ab3e4..7900e63 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/DateUtil.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/DateUtil.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.util;
+package com.tamic.statinterface.stats.util;
import java.text.SimpleDateFormat;
import java.util.Date;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/DeviceUtil.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/DeviceUtil.java
similarity index 86%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/DeviceUtil.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/util/DeviceUtil.java
index d7ceb21..22be258 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/DeviceUtil.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/DeviceUtil.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.util;
+package com.tamic.statinterface.stats.util;
import android.app.Activity;
import android.content.Context;
@@ -6,11 +6,12 @@
import android.content.pm.PackageManager;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
+import android.os.Build;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.WindowManager;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
/**
@@ -128,6 +129,26 @@ public static float getScreenDensity(Context context) {
return context.getResources().getDisplayMetrics().density;
}
+ /**
+ * 获取当前手机型号
+ */
+ public static String getPhoneModel() {
+ return android.os.Build.MODEL;
+ }
+
+
+ /**
+ * 获取手机系统类型
+ */
+ public static String getSystemModel() {
+ return Build.BRAND;
+ }
+
+ /**获取手机系统版本*/
+ public static int getSystemVersion() {
+ return Build.VERSION.SDK_INT;
+ }
+
}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/JsonUtil.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/JsonUtil.java
similarity index 97%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/JsonUtil.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/util/JsonUtil.java
index 575e0f8..ef95cbd 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/JsonUtil.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/JsonUtil.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.util;
+package com.tamic.statinterface.stats.util;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/NetworkUtil.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/NetworkUtil.java
similarity index 99%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/NetworkUtil.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/util/NetworkUtil.java
index ba4d74f..ece686d 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/NetworkUtil.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/NetworkUtil.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.util;
+package com.tamic.statinterface.stats.util;
import android.content.Context;
import android.net.ConnectivityManager;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/PollUtil.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/PollUtil.java
similarity index 94%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/PollUtil.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/util/PollUtil.java
index b13f5a7..322fa50 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/PollUtil.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/PollUtil.java
@@ -1,4 +1,4 @@
-package com.tamic.statInterface.statsdk.util;
+package com.tamic.statinterface.stats.util;
import android.app.AlarmManager;
import android.app.PendingIntent;
@@ -6,7 +6,7 @@
import android.content.Intent;
import android.os.SystemClock;
-import com.tamic.statInterface.statsdk.core.TcUploadCoreReceiver;
+import com.tamic.statinterface.stats.core.TcUploadCoreReceiver;
/**
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/StatLog.java b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/StatLog.java
similarity index 98%
rename from StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/StatLog.java
rename to StatInterface/src/main/java/com/tamic/statInterface/stats/util/StatLog.java
index 43020ac..5e97e8b 100644
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/util/StatLog.java
+++ b/StatInterface/src/main/java/com/tamic/statInterface/stats/util/StatLog.java
@@ -1,11 +1,11 @@
-package com.tamic.statInterface.statsdk.util;
+package com.tamic.statinterface.stats.util;
import android.os.Environment;
import android.util.Log;
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
+import com.tamic.statinterface.stats.constants.StaticsConfig;
import java.io.BufferedReader;
import java.io.File;
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/IUpLoadlistener.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/IUpLoadlistener.java
deleted file mode 100644
index 04653fc..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/IUpLoadlistener.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.tamic.statInterface.statsdk.core;
-
-/**
- * 上报状态接口
- * Created by LIUYONGKUI726 on 2016-03-25.
- */
-public interface IUpLoadlistener {
-
- void onStart();
-
- void onUpLoad();
-
- void onSucess();
-
- void onFailure();
-
- void onCancell();
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStaticsManager.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStaticsManager.java
deleted file mode 100644
index f042c33..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/core/TcStaticsManager.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.tamic.statInterface.statsdk.core;
-
-import android.content.Context;
-
-/**
- * Created by Tamic on 2016-04-05.
- * StaticsManager
- */
-public interface TcStaticsManager {
-
- boolean onInit(int appId, String channel, String fileName);
-
- void onSend();
-
- void onStore();
-
- void onRelease();
-
- void onRecordAppStart();
-
- void onRrecordPageEnd();
-
- void onRecordPageStart(Context context);
-
- void onRrecordAppEnd();
-
- void onInitPage(String... strings);
-
- void onPageParameter(String... strings);
-
- void onInitEvent(String eventName);
-
- void onEventParameter(String... strings);
-
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/Customer.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/Customer.java
deleted file mode 100644
index f58019e..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/Customer.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.tamic.statInterface.statsdk.db;
-
-import java.util.List;
-
-import de.greenrobot.dao.DaoException;
-
-// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
-
-/**
- * Entity mapped to table "CUSTOMER".
- */
-public class Customer {
-
- private Long id;
- /** Not-null value. */
- private String name;
-
- /** Used to resolve relations */
- private transient DaoSession daoSession;
-
- /** Used for active entity operations. */
- private transient CustomerDao myDao;
-
- public Customer() {
- }
-
- public Customer(Long id) {
- this.id = id;
- }
-
- public Customer(Long id, String name) {
- this.id = id;
- this.name = name;
- }
-
- /** called by internal mechanisms, do not call yourself. */
- public void __setDaoSession(DaoSession daoSession) {
- this.daoSession = daoSession;
- myDao = daoSession != null ? daoSession.getCustomerDao() : null;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- /** Not-null value. */
- public String getName() {
- return name;
- }
-
- /** Not-null value; ensure this value is available before it is saved to the database. */
- public void setName(String name) {
- this.name = name;
- }
-
-
-
-
-
- /** Convenient call for {@link AbstractDao#delete(Object)}. Entity must attached to an entity context. */
- public void delete() {
- if (myDao == null) {
- throw new DaoException("Entity is detached from DAO context");
- }
- myDao.delete(this);
- }
-
- /** Convenient call for {@link AbstractDao#update(Object)}. Entity must attached to an entity context. */
- public void update() {
- if (myDao == null) {
- throw new DaoException("Entity is detached from DAO context");
- }
- myDao.update(this);
- }
-
- /** Convenient call for {@link AbstractDao#refresh(Object)}. Entity must attached to an entity context. */
- public void refresh() {
- if (myDao == null) {
- throw new DaoException("Entity is detached from DAO context");
- }
- myDao.refresh(this);
- }
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/CustomerDao.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/CustomerDao.java
deleted file mode 100644
index 45c6d5b..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/CustomerDao.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package com.tamic.statInterface.statsdk.db;
-
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteStatement;
-
-import de.greenrobot.dao.AbstractDao;
-import de.greenrobot.dao.Property;
-import de.greenrobot.dao.internal.DaoConfig;
-
-// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
-
-/**
- * DAO for table "CUSTOMER".
-*/
-public class CustomerDao extends AbstractDao {
-
- public static final String TABLENAME = "CUSTOMER";
-
- /**
- * Properties of entity Customer.
- * Can be used for QueryBuilder and for referencing column names.
- */
- public static class Properties {
- public final static Property Id = new Property(0, Long.class, "id", true, "_id");
- public final static Property Name = new Property(1, String.class, "name", false, "NAME");
- };
-
- private DaoSession daoSession;
-
-
- public CustomerDao(DaoConfig config) {
- super(config);
- }
-
- public CustomerDao(DaoConfig config, DaoSession daoSession) {
- super(config, daoSession);
- this.daoSession = daoSession;
- }
-
- /** Creates the underlying database table. */
- public static void createTable(SQLiteDatabase db, boolean ifNotExists) {
- String constraint = ifNotExists? "IF NOT EXISTS ": "";
- db.execSQL("CREATE TABLE " + constraint + "\"CUSTOMER\" (" + //
- "\"_id\" INTEGER PRIMARY KEY ," + // 0: id
- "\"NAME\" TEXT NOT NULL );"); // 1: name
- }
-
- /** Drops the underlying database table. */
- public static void dropTable(SQLiteDatabase db, boolean ifExists) {
- String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + "\"CUSTOMER\"";
- db.execSQL(sql);
- }
-
- /** @inheritdoc */
- @Override
- protected void bindValues(SQLiteStatement stmt, Customer entity) {
- stmt.clearBindings();
-
- Long id = entity.getId();
- if (id != null) {
- stmt.bindLong(1, id);
- }
- stmt.bindString(2, entity.getName());
- }
-
- @Override
- protected void attachEntity(Customer entity) {
- super.attachEntity(entity);
- entity.__setDaoSession(daoSession);
- }
-
- /** @inheritdoc */
- @Override
- public Long readKey(Cursor cursor, int offset) {
- return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
- }
-
- /** @inheritdoc */
- @Override
- public Customer readEntity(Cursor cursor, int offset) {
- Customer entity = new Customer( //
- cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
- cursor.getString(offset + 1) // name
- );
- return entity;
- }
-
- /** @inheritdoc */
- @Override
- public void readEntity(Cursor cursor, Customer entity, int offset) {
- entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
- entity.setName(cursor.getString(offset + 1));
- }
-
- /** @inheritdoc */
- @Override
- protected Long updateKeyAfterInsert(Customer entity, long rowId) {
- entity.setId(rowId);
- return rowId;
- }
-
- /** @inheritdoc */
- @Override
- public Long getKey(Customer entity) {
- if(entity != null) {
- return entity.getId();
- } else {
- return null;
- }
- }
-
- /** @inheritdoc */
- @Override
- protected boolean isEntityUpdateable() {
- return true;
- }
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/DaoMaster.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/DaoMaster.java
deleted file mode 100644
index 87d76e8..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/DaoMaster.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.tamic.statInterface.statsdk.db;
-
-import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteDatabase.CursorFactory;
-import android.database.sqlite.SQLiteOpenHelper;
-import android.util.Log;
-
-import de.greenrobot.dao.AbstractDaoMaster;
-import de.greenrobot.dao.identityscope.IdentityScopeType;
-
-// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
-
-/**
- * Master of DAO (schema version 1000): knows all DAOs.
-*/
-public class DaoMaster extends AbstractDaoMaster {
- public static final int SCHEMA_VERSION = 1000;
-
- /** Creates underlying database table using DAOs. */
- public static void createAllTables(SQLiteDatabase db, boolean ifNotExists) {
- TcNoteDao.createTable(db, ifNotExists);
- CustomerDao.createTable(db, ifNotExists);
- }
-
- /** Drops underlying database table using DAOs. */
- public static void dropAllTables(SQLiteDatabase db, boolean ifExists) {
- TcNoteDao.dropTable(db, ifExists);
- CustomerDao.dropTable(db, ifExists);
- }
-
- public static abstract class OpenHelper extends SQLiteOpenHelper {
-
- public OpenHelper(Context context, String name, CursorFactory factory) {
- super(context, name, factory, SCHEMA_VERSION);
- }
-
- @Override
- public void onCreate(SQLiteDatabase db) {
- Log.i("greenDAO", "Creating tables for schema version " + SCHEMA_VERSION);
- createAllTables(db, false);
- }
- }
-
- /** WARNING: Drops all table on Upgrade! Use only during development. */
- public static class DevOpenHelper extends OpenHelper {
- public DevOpenHelper(Context context, String name, CursorFactory factory) {
- super(context, name, factory);
- }
-
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- Log.i("greenDAO", "Upgrading schema from version " + oldVersion + " to " + newVersion + " by dropping all tables");
- dropAllTables(db, true);
- onCreate(db);
- }
- }
-
- public DaoMaster(SQLiteDatabase db) {
- super(db, SCHEMA_VERSION);
- registerDaoClass(TcNoteDao.class);
- registerDaoClass(CustomerDao.class);
- }
-
- public DaoSession newSession() {
- return new DaoSession(db, IdentityScopeType.Session, daoConfigMap);
- }
-
- public DaoSession newSession(IdentityScopeType type) {
- return new DaoSession(db, type, daoConfigMap);
- }
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/DaoSession.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/DaoSession.java
deleted file mode 100644
index b236acf..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/DaoSession.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.tamic.statInterface.statsdk .db;
-
-import android.database.sqlite.SQLiteDatabase;
-
-import java.util.Map;
-
-import de.greenrobot.dao.AbstractDao;
-import de.greenrobot.dao.AbstractDaoSession;
-import de.greenrobot.dao.identityscope.IdentityScopeType;
-import de.greenrobot.dao.internal.DaoConfig;
-
-// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
-
-/**
- * {@inheritDoc}
- *
- * @see AbstractDaoSession
- */
-public class DaoSession extends AbstractDaoSession {
-
- private final DaoConfig paNoteDaoConfig ;
- private final DaoConfig customerDaoConfig;
-
- private final TcNoteDao paNoteDao ;
- private final CustomerDao customerDao;
-
-
- public DaoSession(SQLiteDatabase db, IdentityScopeType type, Map>, DaoConfig>
- daoConfigMap) {
- super(db);
- paNoteDaoConfig = daoConfigMap.get(TcNoteDao.class).clone();
- paNoteDaoConfig.initIdentityScope(type);
-
-
- customerDaoConfig = daoConfigMap.get(CustomerDao.class).clone();
- customerDaoConfig.initIdentityScope(type);
-
-
- paNoteDao = new TcNoteDao(paNoteDaoConfig,this);
- customerDao = new CustomerDao(customerDaoConfig, this);
-
- registerDao(TcNote.class,paNoteDao);
- registerDao(Customer.class, customerDao);
- }
-
- public void clear() {
- paNoteDaoConfig.getIdentityScope().clear();
- customerDaoConfig.getIdentityScope().clear();
- }
-
-
-
- public TcNoteDao getPaNoteDao(){
- return paNoteDao ;
- }
-
- public CustomerDao getCustomerDao() {
- return customerDao;
- }
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/TcNote.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/TcNote.java
deleted file mode 100644
index fdb4e3a..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/TcNote.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.tamic.statInterface.statsdk.db;
-
-// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT. Enable "keep" sections if you want to edit.
-/**
- * Entity mapped to table "Stact_NOTE".
- */
-public class TcNote {
-
- private Long id;
- /** Not-null value. */
- private String firstcloumn;
- /** Not-null value. */
- private String secondcloumn;
- /** Not-null value. */
- private String thirdcloumn;
-
- public TcNote() {
- }
-
- public TcNote(Long id) {
- this.id = id;
- }
-
- public TcNote(Long id, String firstcloumn, String secondcloumn, String thirdcloumn) {
- this.id = id;
- this.firstcloumn = firstcloumn;
- this.secondcloumn = secondcloumn;
- this.thirdcloumn = thirdcloumn;
- }
-
- public Long getId() {
- return id;
- }
-
- public void setId(Long id) {
- this.id = id;
- }
-
- /** Not-null value. */
- public String getFirstcloumn() {
- return firstcloumn;
- }
-
- /** Not-null value; ensure this value is available before it is saved to the database. */
- public void setFirstcloumn(String firstcloumn) {
- this.firstcloumn = firstcloumn;
- }
-
- /** Not-null value. */
- public String getSecondcloumn() {
- return secondcloumn;
- }
-
- /** Not-null value; ensure this value is available before it is saved to the database. */
- public void setSecondcloumn(String secondcloumn) {
- this.secondcloumn = secondcloumn;
- }
-
- /** Not-null value. */
- public String getThirdcloumn() {
- return thirdcloumn;
- }
-
- /** Not-null value; ensure this value is available before it is saved to the database. */
- public void setThirdcloumn(String thirdcloumn) {
- this.thirdcloumn = thirdcloumn;
- }
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/TcNoteDao.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/TcNoteDao.java
deleted file mode 100644
index 815b190..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/TcNoteDao.java
+++ /dev/null
@@ -1,122 +0,0 @@
-package com.tamic.statInterface.statsdk.db;
-
-import android.database.Cursor;
-import android.database.sqlite.SQLiteDatabase;
-import android.database.sqlite.SQLiteStatement;
-
-import com.tamic.statInterface.statsdk.constants.StaticsConfig;
-
-import de.greenrobot.dao.AbstractDao;
-import de.greenrobot.dao.Property;
-import de.greenrobot.dao.internal.DaoConfig;
-
-// THIS CODE IS GENERATED BY greenDAO, DO NOT EDIT.
-
-/**
- * DAO for table "PA_NOTE".
-*/
-public class TcNoteDao extends AbstractDao {
-
- public static final String TABLENAME = StaticsConfig.SDK_TABLE_NAME;
-
-
- /**
- * Properties of entity TcNote.
- * Can be used for QueryBuilder and for referencing column names.
- */
- public static class Properties {
- public final static Property Id = new Property(0, Long.class, "id", true, "_id");
- public final static Property appActionInfo = new Property(1, String.class, StaticsConfig.APPACTION_INFO, false, "FIRSTCLOUMN");
- public final static Property pageInfo = new Property(2, String.class, StaticsConfig.PAGE_INFO, false, "SECONDCLOUMN");
- public final static Property enventInfo = new Property(3, String.class, StaticsConfig.ENVENT_INFO, false, "THIRDCLOUMN");
- }
-
- public TcNoteDao(DaoConfig config) {
- super(config);
- }
-
- public TcNoteDao(DaoConfig config, DaoSession daoSession) {
- super(config, daoSession);
- }
-
- /** Creates the underlying database table. */
- public static void createTable(SQLiteDatabase db, boolean ifNotExists) {
- String constraint = ifNotExists? "IF NOT EXISTS ": "";
- db.execSQL("CREATE TABLE " + constraint + TABLENAME + "(" + //
- "\"_id\" INTEGER PRIMARY KEY ," + // 0: id
- "\"FIRSTCLOUMN\" TEXT NOT NULL ," + // 1: firstcloumn
- "\"SECONDCLOUMN\" TEXT NOT NULL ," + // 2: secondcloumn
- "\"THIRDCLOUMN\" TEXT NOT NULL );"); // 3: thirdcloumn
- }
-
- /** Drops the underlying database table. */
- public static void dropTable(SQLiteDatabase db, boolean ifExists) {
- String sql = "DROP TABLE " + (ifExists ? "IF EXISTS " : "") + TABLENAME;
- db.execSQL(sql);
- }
-
- /** @inheritdoc */
- @Override
- protected void bindValues(SQLiteStatement stmt, TcNote entity) {
- stmt.clearBindings();
-
- Long id = entity.getId();
- if (id != null) {
- stmt.bindLong(1, id);
- }
- stmt.bindString(2, entity.getFirstcloumn());
- stmt.bindString(3, entity.getSecondcloumn());
- stmt.bindString(4, entity.getThirdcloumn());
- }
-
- /** @inheritdoc */
- @Override
- public Long readKey(Cursor cursor, int offset) {
- return cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0);
- }
-
- /** @inheritdoc */
- @Override
- public TcNote readEntity(Cursor cursor, int offset) {
- TcNote entity = new TcNote( //
- cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0), // id
- cursor.getString(offset + 1), // firstcloumn
- cursor.getString(offset + 2), // secondcloumn
- cursor.getString(offset + 3) // thirdcloumn
- );
- return entity;
- }
-
- /** @inheritdoc */
- @Override
- public void readEntity(Cursor cursor, TcNote entity, int offset) {
- entity.setId(cursor.isNull(offset + 0) ? null : cursor.getLong(offset + 0));
- entity.setFirstcloumn(cursor.getString(offset + 1));
- entity.setSecondcloumn(cursor.getString(offset + 2));
- entity.setThirdcloumn(cursor.getString(offset + 3));
- }
-
- /** @inheritdoc */
- @Override
- protected Long updateKeyAfterInsert(TcNote entity, long rowId) {
- entity.setId(rowId);
- return rowId;
- }
-
- /** @inheritdoc */
- @Override
- public Long getKey(TcNote entity) {
- if(entity != null) {
- return entity.getId();
- } else {
- return null;
- }
- }
-
- /** @inheritdoc */
- @Override
- protected boolean isEntityUpdateable() {
- return true;
- }
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/DataConstruct.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/DataConstruct.java
deleted file mode 100644
index 845bc8f..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/DataConstruct.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package com.tamic.statInterface.statsdk.db.helper;
-
-import android.app.Activity;
-import android.content.Context;
-import android.text.TextUtils;
-
-import com.tamic.statInterface.statsdk.core.StaticsListener;
-import com.tamic.statInterface.statsdk.model.AppAction;
-import com.tamic.statInterface.statsdk.model.Event;
-import com.tamic.statInterface.statsdk.model.KeyValueBean;
-import com.tamic.statInterface.statsdk.model.Page;
-import com.tamic.statInterface.statsdk.sp.SharedPreferencesHelper;
-import com.tamic.statInterface.statsdk.util.DateUtil;
-
-import java.util.ArrayList;
-
-/**
- * DataConstruct
- * Created by tamic on 2016-04-11.
- */
-public class DataConstruct {
-
- private static Event event = null;
- private static ArrayList parameter = new ArrayList<>() ;
-
- private static Page page = null ;
- private static ArrayList pageParameter = new ArrayList<>() ;
-
- private static AppAction appAction = null ;
-
- private static StaticsListener staticsListener;
-
- private static String pageId;
-
- private static String referPageId;
-
- private static String REFERPAGE_ID = "referPage_Id";
-
- private DataConstruct() {
- }
-
-
-
- /**
- * initEvent
- * @param eventInterface
- * @param event_name
- */
- public static void initEvent(StaticsListener eventInterface, String event_name){
- event = new Event();
- event.setPage_id(pageId);
- event.setReferer_page_id(referPageId);
- event.setEvent_name(event_name);
- event.setAction_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
- }
-
- /**
- * onEvent
- * @param businessName
- * @param businessValue
- */
- public static void onEvent(String businessName,String businessValue){
- parameter.add(new KeyValueBean(businessName, businessValue));
- if(event == null){
- throw new RuntimeException("you must call initEvent before onEvent!");
- }
- event.setParameter(parameter);
- }
-
- /**
- * storeEvent
- * Activity destory call
- */
- public static void storeEvent(){
- if(event == null){
- return;
- }
- StaticsAgent.storeObject(event);
- }
-
-
- /**
- * initPage
- * @param eventInterface
- */
- public static void initPage(Context context, StaticsListener eventInterface, String page_Id, String referPage_Id){
- staticsListener = eventInterface;
- pageId = page_Id;
- recardPageId(context, page_Id);
- if (TextUtils.isEmpty(referPage_Id)){
- referPageId = getReferPageId(context);
- } else {
- referPageId = referPage_Id;
- }
- page = new Page();
- page.setPage_start_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
- page.setReferer_page_id(referPageId);
- page.setPage_id(pageId);
- }
-
-
- public static void initPageParameter(String name,String value){
- pageParameter.add(new KeyValueBean(name, value));
- page.setParameter(pageParameter);
- }
-
-
- /**
- * storePage
- */
- public static void storePage(){
- if(page == null){
- throw new RuntimeException("you must init before storePage");
- }
- page.setPage_end_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
- StaticsAgent.storeObject(page);
- }
-
-
- /**
- * storeAppAction
- * @param type 1 app打开 2app关闭 3唤醒
- */
- public static void storeAppAction(String type){
- appAction = new AppAction();
- appAction.setAction_time(DateUtil.getDateString(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));
- appAction.setApp_action_type(type);
- StaticsAgent.storeObject(appAction);
- }
-
-
- /**
- * deleteData
- */
- public static void deleteData(){
- StaticsAgent.deleteData();
- }
-
- /**
- * recardPageId
- * @param context
- * @param page_Id
- */
- private static void recardPageId (Context context, String page_Id) {
- SharedPreferencesHelper.getInstance(context).putString(REFERPAGE_ID, page_Id);
- }
-
- /**
- * get ReferPageId
- * @param context
- * @return
- */
- private static String getReferPageId (Context context) {
- return SharedPreferencesHelper.getInstance(context).getString(REFERPAGE_ID);
- }
-
-
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/NoteDaoHelper.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/NoteDaoHelper.java
deleted file mode 100644
index 01d3f48..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/NoteDaoHelper.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.tamic.statInterface.statsdk.db.helper;
-
-import android.content.Context;
-import android.database.sqlite.SQLiteDatabase;
-
-import com.tamic.statInterface.statsdk.db.DaoMaster;
-import com.tamic.statInterface.statsdk.db.DaoSession;
-import com.tamic.statInterface.statsdk.db.TcNoteDao;
-
-/**
- * Created by Tamic on 2016-03-16.
- */
-public class NoteDaoHelper {
- private SQLiteDatabase db;
- private DaoMaster daoMaster;
- private DaoSession daoSession;
- private TcNoteDao paNoteDao ;
-
- public TcNoteDao getPaNoteDao(Context context){
- if(paNoteDao == null){
- paNoteDao = getDaoSession(context).getPaNoteDao();
- }
- return paNoteDao ;
- }
-
-
-
-
- private DaoMaster getDaoMaster(Context context){
- if(daoMaster == null){
- DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "tamic-db", null);
- db = helper.getWritableDatabase();
- daoMaster = new DaoMaster(db);
- }
- return daoMaster ;
- }
-
- private DaoSession getDaoSession(Context context){
- if(daoSession == null){
- daoSession = getDaoMaster(context).newSession();
- }
- return daoSession ;
- }
-
-
-
-
-}
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/StaticsAgent.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/StaticsAgent.java
deleted file mode 100644
index f199999..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/db/helper/StaticsAgent.java
+++ /dev/null
@@ -1,124 +0,0 @@
-package com.tamic.statInterface.statsdk.db.helper;
-
-import android.content.Context;
-import android.text.TextUtils;
-
-import com.alibaba.fastjson.JSONObject;
-import com.tamic.statInterface.statsdk.db.TcNote;
-import com.tamic.statInterface.statsdk.db.TcNoteDao;
-import com.tamic.statInterface.statsdk.model.AppAction;
-import com.tamic.statInterface.statsdk.model.DataBlock;
-import com.tamic.statInterface.statsdk.model.Event;
-import com.tamic.statInterface.statsdk.model.Page;
-import com.tamic.statInterface.statsdk.util.JsonUtil;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Created by Tamic on 2016-03-17.
- */
-public class StaticsAgent {
- private static NoteDaoHelper helper;
- private static TcNoteDao noteDao;
- private static TcNote note;
-
- /**
- * @param context
- */
- public static void init(Context context) {
- helper = new NoteDaoHelper();
- noteDao = helper.getPaNoteDao(context);
- }
-
- /**
- * 存储appAction相关信息
- *
- * @param appAction
- */
- public static void storeAppAction(String appAction) {
- if (TextUtils.isEmpty(appAction))
- throw new NullPointerException("appAction is null");
- storeData(appAction, "", "");
- }
-
- /**
- * storePage
- *
- * @param pageString
- */
- public static void storePage(String pageString) {
- if (TextUtils.isEmpty(pageString))
- throw new NullPointerException("pageString is null");
- storeData("", pageString, "");
- }
-
- /**
- * storeEvent
- *
- * @param eventString
- */
- public static void storeEvent(String eventString) {
- if (TextUtils.isEmpty(eventString))
- throw new NullPointerException("eventString is null");
- storeData("", "", eventString);
- }
-
- public static DataBlock getDataBlock() {
- DataBlock dataBlock = new DataBlock();
- List list = noteDao.loadAll();
- AppAction appAction = new AppAction();
- Page page = new Page();
- Event event = new Event();
- List actionList = new ArrayList();
- List pageList = new ArrayList();
- List eventList = new ArrayList();
- for (int i = 0; i < list.size(); i++) {
- if (!TextUtils.isEmpty(list.get(i).getFirstcloumn())) {
- appAction = JsonUtil.parseObject(list.get(i).getFirstcloumn(), AppAction.class);
- actionList.add(appAction);
- }
- if (!TextUtils.isEmpty(list.get(i).getSecondcloumn())) {
- page = JsonUtil.parseObject(list.get(i).getSecondcloumn(), Page.class);
- pageList.add(page);
- }
- if (!TextUtils.isEmpty(list.get(i).getThirdcloumn())) {
- event = JsonUtil.parseObject(list.get(i).getThirdcloumn(), Event.class);
- eventList.add(event);
- }
- }
- dataBlock.setApp_action(actionList);
- dataBlock.setPage(pageList);
- dataBlock.setEvent(eventList);
- return dataBlock;
- }
-
-
- public static void storeData(String appActionInfo, String pageInfo, String eventInfo) {
- note = new TcNote(null, appActionInfo, pageInfo, eventInfo);
- if (null != helper) {
- noteDao.insert(note);
- }
- }
-
- /**
- * storeObject
- *
- * @param o
- */
- public static void storeObject(Object o) {
- if (o instanceof Event) {
- storeEvent(JSONObject.toJSONString(o));
- } else if (o instanceof AppAction) {
- storeAppAction(JSONObject.toJSONString(o));
- } else if (o instanceof Page) {
- storePage(JSONObject.toJSONString(o));
- }
- }
-
- public static void deleteData() {
- noteDao.deleteAll();
- }
-
-}
-
diff --git a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/DataBlock.java b/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/DataBlock.java
deleted file mode 100644
index a0eca2e..0000000
--- a/StatInterface/src/main/java/com/tamic/statInterface/statsdk/model/DataBlock.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.tamic.statInterface.statsdk.model;
-
-import java.util.List;
-
-/**
- * 上传数据对象bean
- * Created by ZHANGLIANG098 on 2016-03-24.
- */
-public class DataBlock {
- private List app_action ;
- private List page ;
- private List event ;
-
- public List getApp_action() {
- return app_action;
- }
-
- public void setApp_action(List app_action) {
- this.app_action = app_action;
- }
-
- public List getPage() {
- return page;
- }
-
- public void setPage(List page) {
- this.page = page;
- }
-
- public List getEvent() {
- return event;
- }
-
- public void setEvent(List event) {
- this.event = event;
- }
-}
diff --git a/app/build.gradle b/app/build.gradle
index a6a933d..934d948 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,15 +1,15 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 23
- buildToolsVersion "23.0.2"
+ compileSdkVersion 26
+ buildToolsVersion "26.0.2"
defaultConfig {
applicationId "com.tamic.statsdkdemo"
minSdkVersion 14
- targetSdkVersion 23
- versionCode 1
- versionName "1.0"
+ targetSdkVersion 26
+ versionCode 2
+ versionName "2.0"
}
buildTypes {
release {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ae4b829..a0cc903 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,23 +1,23 @@
+ package="com.tamic.statsdkdemo">
+ android:theme="@style/AppTheme">
+ android:name="com.tamic.statsdkdemo.MainActivity"
+ android:label="@string/app_name">
-
+
@@ -29,7 +29,7 @@
-
+
diff --git a/app/src/main/java/com/tamic/statsdkdemo/BaseActivity.java b/app/src/main/java/com/tamic/statsdkdemo/BaseActivity.java
index b0eee69..f68a3a7 100644
--- a/app/src/main/java/com/tamic/statsdkdemo/BaseActivity.java
+++ b/app/src/main/java/com/tamic/statsdkdemo/BaseActivity.java
@@ -2,7 +2,8 @@
import android.app.Activity;
-import com.tamic.statInterface.statsdk.core.TcStatInterface;
+import com.tamic.statinterface.stats.core.TcStatInterface;
+
/**
* Created by Tamic on 2016-03-17.
@@ -19,7 +20,6 @@ protected void onResume() {
@Override
protected void onPause() {
super.onPause();
-
TcStatInterface.recordPageEnd();
}
@@ -33,8 +33,4 @@ protected void onDestroy() {
}
-
-
-
-
}
diff --git a/app/src/main/java/com/tamic/statsdkdemo/MainActivity.java b/app/src/main/java/com/tamic/statsdkdemo/MainActivity.java
index 36be676..c6439d8 100644
--- a/app/src/main/java/com/tamic/statsdkdemo/MainActivity.java
+++ b/app/src/main/java/com/tamic/statsdkdemo/MainActivity.java
@@ -4,7 +4,9 @@
import android.os.*;
import android.view.View;
-import com.tamic.statInterface.statsdk.core.TcStatInterface;
+import com.tamic.statinterface.stats.core.TcStatInterface;
+
+import java.util.HashMap;
public class MainActivity extends BaseActivity {
@@ -16,7 +18,12 @@ protected void onCreate(Bundle savedInstanceState) {
findViewById(R.id.id_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- TcStatInterface.onEvent("main", "onlick", "send data");
+ // 按钮埋了点
+ HashMap map = new HashMap();
+ map.put("参数1", "xxx");
+ map.put("参数2", "yyyy");
+
+ TcStatInterface.onEvent("main", map);
//发送数据
TcStatInterface.reportData();
@@ -28,8 +35,11 @@ public void onClick(View v) {
@Override
public void onClick(View v) {
- // test
- TcStatInterface.onEventParameter("onclick", "open next");
+ HashMap map = new HashMap();
+ map.put("参数3", "打开第二界面");
+ map.put("参数4", "打开第二界面22");
+ TcStatInterface.onEvent("open", map);
+
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent);
diff --git a/app/src/main/java/com/tamic/statsdkdemo/SecondActivity.java b/app/src/main/java/com/tamic/statsdkdemo/SecondActivity.java
index 8a554dc..e1ea831 100644
--- a/app/src/main/java/com/tamic/statsdkdemo/SecondActivity.java
+++ b/app/src/main/java/com/tamic/statsdkdemo/SecondActivity.java
@@ -3,19 +3,23 @@
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
-import com.tamic.statInterface.statsdk.core.TcStatInterface;
+
+import com.tamic.statinterface.stats.core.TcStatInterface;
+
+import java.util.HashMap;
/**
* Created by Tamic on 2016-03-16.
*/
public class SecondActivity extends BaseActivity implements View.OnClickListener {
- Button button ;
+
+ Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lay_activity_second);
- button =(Button)findViewById(R.id.second_button);
+ button = (Button) findViewById(R.id.second_button);
button.setOnClickListener(this);
@@ -29,6 +33,9 @@ protected void onResume() {
@Override
public void onClick(View v) {
- TcStatInterface.onEvent("second Activity", "onclik", "testButton");
+ HashMap hashMap = new HashMap();
+ hashMap.put("onclick", v.toString());
+ TcStatInterface.onEvent("second Activity", hashMap);
+
}
}
diff --git a/app/src/main/java/com/tamic/statsdkdemo/StatAppliation.java b/app/src/main/java/com/tamic/statsdkdemo/StatAppliation.java
index cfcb0ee..15119cd 100644
--- a/app/src/main/java/com/tamic/statsdkdemo/StatAppliation.java
+++ b/app/src/main/java/com/tamic/statsdkdemo/StatAppliation.java
@@ -1,7 +1,7 @@
package com.tamic.statsdkdemo;
import android.app.Application;
-import com.tamic.statInterface.statsdk.core.TcStatInterface;
+import com.tamic.statinterface.stats.core.TcStatInterface;
/**
* Created by LIUYONGKUI726 on 2016-04-13.
@@ -15,10 +15,13 @@ public void onCreate() {
int appId = 21212;
// assets
String fileName = "stat_id.json";
+
String url = "http://www.baidu.com";
// init statSdk
TcStatInterface.initialize(this, appId, "you app chanel", fileName);
+ // set upload url
TcStatInterface.setUrl(url);
+ // Set loadPolicy
TcStatInterface.setUploadPolicy(TcStatInterface.UploadPolicy.UPLOAD_POLICY_DEVELOPMENT, TcStatInterface.UPLOAD_TIME_ONE);
}
diff --git a/app/src/main/java/com/tamic/statsdkdemo/imp/StaticsImpl.java b/app/src/main/java/com/tamic/statsdkdemo/imp/StaticsImpl.java
deleted file mode 100644
index 5ddf6a0..0000000
--- a/app/src/main/java/com/tamic/statsdkdemo/imp/StaticsImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-package com.tamic.statsdkdemo.imp;
-
-import android.content.Context;
-
-import com.alibaba.fastjson.JSON;
-import com.tamic.statInterface.statsdk.core.StaticsListener;
-
-import java.io.InputStream;
-import java.util.HashMap;
-
-import cz.msebera.android.httpclient.util.EncodingUtils;
-
-/**
- * Created by Tmaic on 2016-04-13.
- */
-public class StaticsImpl implements StaticsListener {
-
-
-
- String json;
-
- private Context context;
-
-
- public StaticsImpl(Context context) {
- this.context = context;
- }
-
- @Override
- public HashMap getStatIdMaps() {
-
-
- HashMap map = null;
- if (getFromAsset("stat_id.json") != null) {
- map = (HashMap) JSON.parseObject(getFromAsset("stat_id.json"), HashMap.class);
- }
- return map;
- }
-
- public String getFromAsset(String fileName){
- String result="";
- try{
- InputStream in = context.getResources().getAssets().open(fileName);
- int length = in.available();
- byte [] buffer = new byte[length];
- in.read(buffer);
- result = EncodingUtils.getString(buffer, "UTF-8");
- }
- catch(Exception e){
- e.printStackTrace();
- }
- return result;
- }
-
-}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 0447da9..715d464 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
- StaticticsSdkDemo
+ TcSdk
Hello world!
Settings
diff --git a/build.gradle b/build.gradle
index 9405f3f..95be146 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,11 +2,13 @@
buildscript {
repositories {
+ //maven { url "https://jitpack.io" }
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:1.2.3'
-
+ classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.4'
+ classpath 'com.github.dcendents:android-maven-gradle-plugin:1.4.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
@@ -14,6 +16,7 @@ buildscript {
allprojects {
repositories {
+ // maven { url "https://jitpack.io" }
jcenter()
}
}