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() } }