From 49fbc0de17d4b40f5dfaf6e7ff0811a2e42c07eb Mon Sep 17 00:00:00 2001 From: Pedro Date: Thu, 10 Mar 2016 14:04:27 +0100 Subject: [PATCH 01/37] Read abi and display --- .../main/java/com/adjust/sdk/DeviceInfo.java | 20 +++++++++++ .../java/com/adjust/sdk/PackageBuilder.java | 2 ++ .../main/java/com/adjust/sdk/Reflection.java | 33 +++++++++++++++++++ .../src/main/java/com/adjust/sdk/Util.java | 8 +++++ 4 files changed, 63 insertions(+) diff --git a/Adjust/adjust/src/main/java/com/adjust/sdk/DeviceInfo.java b/Adjust/adjust/src/main/java/com/adjust/sdk/DeviceInfo.java index 7780dd5f9..a3dbcfbea 100644 --- a/Adjust/adjust/src/main/java/com/adjust/sdk/DeviceInfo.java +++ b/Adjust/adjust/src/main/java/com/adjust/sdk/DeviceInfo.java @@ -47,6 +47,8 @@ class DeviceInfo { String screenDensity; String displayWidth; String displayHeight; + String hardwareName; + String abi; Map pluginKeys; DeviceInfo(Context context, String sdkPrefix) { @@ -79,6 +81,8 @@ class DeviceInfo { pluginKeys = Util.getPluginKeys(context); macSha1 = getMacSha1(macAddress); macShortMd5 = getMacShortMd5(macAddress); + hardwareName = getHardwareName(); + abi = getABI(); } private String getMacAddress(Context context, boolean isGooglePlayServicesAvailable) { @@ -150,6 +154,10 @@ private String getCountry(Locale locale) { return locale.getCountry(); } + private String getHardwareName() { + return Build.DISPLAY; + } + private String getScreenSize(int screenLayout) { int screenSize = screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK; @@ -261,4 +269,16 @@ private String getFacebookAttributionId(final Context context) { return null; } } + + private String getABI() { + String[] SupportedABIS = Util.getSupportedAbis(); + + // SUPPORTED_ABIS is only supported in API level 21 + // get CPU_ABI instead + if (SupportedABIS == null || SupportedABIS.length == 0) { + return Util.getCpuAbi(); + } + + return SupportedABIS[0]; + } } diff --git a/Adjust/adjust/src/main/java/com/adjust/sdk/PackageBuilder.java b/Adjust/adjust/src/main/java/com/adjust/sdk/PackageBuilder.java index 7791aae33..e8606567a 100644 --- a/Adjust/adjust/src/main/java/com/adjust/sdk/PackageBuilder.java +++ b/Adjust/adjust/src/main/java/com/adjust/sdk/PackageBuilder.java @@ -150,6 +150,8 @@ private void injectDeviceInfo(Map parameters) { addString(parameters, "screen_density", deviceInfo.screenDensity); addString(parameters, "display_width", deviceInfo.displayWidth); addString(parameters, "display_height", deviceInfo.displayHeight); + addString(parameters, "hardware_name", deviceInfo.hardwareName); + addString(parameters, "cpu_type", deviceInfo.abi); fillPluginKeys(parameters); } diff --git a/Adjust/adjust/src/main/java/com/adjust/sdk/Reflection.java b/Adjust/adjust/src/main/java/com/adjust/sdk/Reflection.java index 0d1979807..36d9c3f20 100644 --- a/Adjust/adjust/src/main/java/com/adjust/sdk/Reflection.java +++ b/Adjust/adjust/src/main/java/com/adjust/sdk/Reflection.java @@ -91,6 +91,39 @@ private static boolean isConnectionResultSuccess(Integer statusCode) { } } + public static String[] getSupportedAbis() { + String[] supportedAbis = null; + try { + Class buildClass = forName("android.os.Build"); + + Field supportedAbisField = buildClass.getField("SUPPORTED_ABIS"); + + Object supportedAbisObject = supportedAbisField.get(null); + + if (supportedAbisObject instanceof String[]) { + supportedAbis = (String[]) supportedAbisObject; + } + } catch (Exception e) {} + + return supportedAbis; + } + + public static String getCpuAbi() { + String cpuAbi = null; + try { + Class buildClass = forName("android.os.Build"); + + Field cpuAbiField = buildClass.getField("CPU_ABI"); + + Object cpuAbiObject = cpuAbiField.get(null); + + if (cpuAbiObject instanceof String) { + cpuAbi = (String) cpuAbiObject; + } + }catch (Exception e) {} + return cpuAbi; + } + public static Class forName(String className) { try { Class classObject = Class.forName(className); diff --git a/Adjust/adjust/src/main/java/com/adjust/sdk/Util.java b/Adjust/adjust/src/main/java/com/adjust/sdk/Util.java index 26b1c8229..6299e5a70 100644 --- a/Adjust/adjust/src/main/java/com/adjust/sdk/Util.java +++ b/Adjust/adjust/src/main/java/com/adjust/sdk/Util.java @@ -492,4 +492,12 @@ public static String convertToHex(final byte[] bytes) { final String formatString = "%0" + (bytes.length << 1) + "x"; return String.format(Locale.US, formatString, bigInt); } + + public static String[] getSupportedAbis() { + return Reflection.getSupportedAbis(); + } + + public static String getCpuAbi() { + return Reflection.getCpuAbi(); + } } From 3f648c889acb7884fa8ac058989a2ca1f79a5128 Mon Sep 17 00:00:00 2001 From: Pedro Date: Wed, 16 Mar 2016 17:12:58 +0100 Subject: [PATCH 02/37] Add service examples --- Adjust/example/src/main/AndroidManifest.xml | 20 ++++-- .../java/com/adjust/example/MainActivity.java | 9 ++- .../com/adjust/example/ServiceActivity.java | 27 ++++++++ .../com/adjust/example/ServiceExample.java | 66 +++++++++++++++++++ .../src/main/res/layout/activity_main.xml | 14 ++++ .../src/main/res/layout/activity_service.xml | 29 ++++++++ .../example/src/main/res/values/strings.xml | 3 + 7 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 Adjust/example/src/main/java/com/adjust/example/ServiceActivity.java create mode 100644 Adjust/example/src/main/java/com/adjust/example/ServiceExample.java create mode 100644 Adjust/example/src/main/res/layout/activity_service.xml diff --git a/Adjust/example/src/main/AndroidManifest.xml b/Adjust/example/src/main/AndroidManifest.xml index 3d6a3faa8..52c1ad0d5 100644 --- a/Adjust/example/src/main/AndroidManifest.xml +++ b/Adjust/example/src/main/AndroidManifest.xml @@ -11,7 +11,6 @@ android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> - @@ -27,17 +26,28 @@ android:screenOrientation="portrait"> + - + - + + + + + - + + \ No newline at end of file diff --git a/Adjust/example/src/main/java/com/adjust/example/MainActivity.java b/Adjust/example/src/main/java/com/adjust/example/MainActivity.java index 953ecef2d..466c4bec1 100644 --- a/Adjust/example/src/main/java/com/adjust/example/MainActivity.java +++ b/Adjust/example/src/main/java/com/adjust/example/MainActivity.java @@ -4,6 +4,7 @@ import android.net.Uri; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; +import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -13,7 +14,7 @@ import com.adjust.sdk.Adjust; import com.adjust.sdk.AdjustEvent; -public class MainActivity extends ActionBarActivity { +public class MainActivity extends AppCompatActivity { private static final String EVENT_TOKEN_SIMPLE = "{YourEventToken}"; private static final String EVENT_TOKEN_REVENUE = "{YourEventToken}"; private static final String EVENT_TOKEN_CALLBACK = "{YourEventToken}"; @@ -122,4 +123,10 @@ public void onIsSDKEnabledClick(View v) { Toast.LENGTH_SHORT).show(); } } + + public void onServiceActivityClick(View v) { + Intent intent = new Intent(this, ServiceActivity.class); + startActivity(intent); + } + } diff --git a/Adjust/example/src/main/java/com/adjust/example/ServiceActivity.java b/Adjust/example/src/main/java/com/adjust/example/ServiceActivity.java new file mode 100644 index 000000000..8ffd068e8 --- /dev/null +++ b/Adjust/example/src/main/java/com/adjust/example/ServiceActivity.java @@ -0,0 +1,27 @@ +package com.adjust.example; + +import android.content.Intent; +import android.os.AsyncTask; +import android.os.SystemClock; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.util.Log; +import android.view.View; + +public class ServiceActivity extends AppCompatActivity { + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_service); + } + + public void onServiceClick(View v) { + Intent intent = new Intent(this, ServiceExample.class); + startService(intent); + } + + public void onReturnClick(View v) { + finish(); + } +} diff --git a/Adjust/example/src/main/java/com/adjust/example/ServiceExample.java b/Adjust/example/src/main/java/com/adjust/example/ServiceExample.java new file mode 100644 index 000000000..45d5e115e --- /dev/null +++ b/Adjust/example/src/main/java/com/adjust/example/ServiceExample.java @@ -0,0 +1,66 @@ +package com.adjust.example; + +import android.app.Service; +import android.content.Intent; +import android.os.AsyncTask; +import android.os.IBinder; +import android.os.SystemClock; +import android.util.Log; + +import com.adjust.sdk.Adjust; +import com.adjust.sdk.AdjustEvent; + +/** + * Created by pfms on 16/03/16. + */ +public class ServiceExample extends Service { + private static final String EVENT_TOKEN_BACKGROUND = "{YourEventToken}"; + + public ServiceExample() { + super(); + Log.d("example", "ServiceExample constructor"); + } + + @Override + public IBinder onBind(Intent intent) { + Log.d("example", "ServiceExample onBind"); + + return null; + } + + @Override + public void onCreate() { + super.onCreate(); + Log.d("example", "ServiceExample onCreate"); + } + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + int startDefaultOption = super.onStartCommand(intent, flags, startId); + Log.d("example", "ServiceExample onStartCommand"); + + new AsyncTask() { + @Override + protected Void doInBackground(Void... params) { + Log.d("example", "ServiceExample background sleeping"); + SystemClock.sleep(3000); + Log.d("example", "ServiceExample background awake"); + + AdjustEvent event = new AdjustEvent(EVENT_TOKEN_BACKGROUND); + Adjust.trackEvent(event); + + Log.d("example", "ServiceExample background event tracked"); + + return null; + } + }.execute(); + + return START_NOT_STICKY; + } + + @Override + public void onDestroy() { + super.onDestroy(); + Log.d("example", "ServiceExample onDestroy"); + } +} diff --git a/Adjust/example/src/main/res/layout/activity_main.xml b/Adjust/example/src/main/res/layout/activity_main.xml index 5801cda53..f6a9bfd80 100644 --- a/Adjust/example/src/main/res/layout/activity_main.xml +++ b/Adjust/example/src/main/res/layout/activity_main.xml @@ -100,4 +100,18 @@ android:onClick="onIsSDKEnabledClick" android:text="@string/btn_is_sdk_enabled" /> +