Skip to content

Commit da6d2e5

Browse files
author
Ville Orkas
committed
Version 2.0.0-beta3
1 parent 957f847 commit da6d2e5

File tree

16 files changed

+210
-38
lines changed

16 files changed

+210
-38
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ android {
99
minSdkVersion 9
1010
targetSdkVersion 23
1111
versionCode = 2000
12-
versionName = "2.0.0-beta2"
12+
versionName = "2.0.0-beta3"
1313
}
1414
buildTypes {
1515
release {

app/src/main/java/com/unity3d/ads/example/UnityAdsExample.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import android.widget.CheckBox;
1111
import android.widget.EditText;
1212
import android.widget.LinearLayout;
13+
import android.widget.TextView;
1314
import android.widget.Toast;
1415

1516
import com.unity3d.ads.IUnityAdsListener;
@@ -76,6 +77,7 @@ public void onClick(View v) {
7677
final Button initializeButton = (Button) findViewById(R.id.unityads_example_initialize_button);
7778
final EditText gameIdEdit = (EditText) findViewById(R.id.unityads_example_gameid_edit);
7879
final CheckBox testModeCheckbox = (CheckBox) findViewById(R.id.unityads_example_testmode_checkbox);
80+
final TextView statusText = (TextView) findViewById(R.id.unityads_example_statustext);
7981

8082
SharedPreferences preferences = getSharedPreferences("Settings", MODE_PRIVATE);
8183
gameIdEdit.setText(preferences.getString("gameId", defaultGameId));
@@ -93,6 +95,7 @@ public void onClick(View v) {
9395
gameIdEdit.setEnabled(false);
9496
testModeCheckbox.setEnabled(false);
9597

98+
statusText.setText("Initializing...");
9699
UnityAds.initialize(self, gameId, unityAdsListener, testModeCheckbox.isChecked());
97100

98101
// store entered gameid in app settings
@@ -174,6 +177,9 @@ private class UnityAdsListener implements IUnityAdsListener {
174177

175178
@Override
176179
public void onUnityAdsReady(final String zoneId) {
180+
TextView statusText = (TextView) findViewById(R.id.unityads_example_statustext);
181+
statusText.setText("");
182+
177183
DeviceLog.debug("onUnityAdsReady: " + zoneId);
178184
Utilities.runOnUiThread(new Runnable() {
179185
@Override
@@ -216,6 +222,9 @@ public void onUnityAdsFinish(String zoneId, UnityAds.FinishState result) {
216222
public void onUnityAdsError(UnityAds.UnityAdsError error, String message) {
217223
DeviceLog.debug("onUnityAdsError: " + error + " - " + message);
218224
toast("Error", error + " " + message);
225+
226+
TextView statusText = (TextView) findViewById(R.id.unityads_example_statustext);
227+
statusText.setText(error + " - " + message);
219228
}
220229

221230
private void toast(String callback, String msg) {

app/src/main/res/layout/unityads_example_layout.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,4 +123,19 @@
123123

124124
</LinearLayout>
125125

126+
<TextView
127+
android:layout_width="wrap_content"
128+
android:layout_height="wrap_content"
129+
android:textAppearance="?android:attr/textAppearanceMedium"
130+
android:id="@+id/unityads_example_statustext"
131+
android:layout_below="@+id/unityads_example_button_container"
132+
android:layout_alignParentRight="true"
133+
android:layout_alignParentEnd="true"
134+
android:layout_alignParentBottom="true"
135+
android:layout_alignParentLeft="true"
136+
android:layout_alignParentStart="true"
137+
android:textAlignment="center"
138+
android:textColor="#ffffff"
139+
android:gravity="center" />
140+
126141
</RelativeLayout>

lib/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ android {
1313
minSdkVersion 9
1414
targetSdkVersion 23
1515
versionCode = 2000
16-
versionName = "2.0.0-beta2"
16+
versionName = "2.0.0-beta3"
1717

1818
setProperty("archivesBaseName", "unity-ads")
1919

lib/src/androidTest/java/com/unity3d/ads/test/hybrid/HybridTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@ public void run() {
6161
Configuration configuration = new Configuration();
6262
final Class[] apiClassList = {
6363
com.unity3d.ads.api.AdUnit.class,
64+
com.unity3d.ads.api.Broadcast.class,
6465
com.unity3d.ads.api.Cache.class,
6566
com.unity3d.ads.api.Connectivity.class,
6667
com.unity3d.ads.api.DeviceInfo.class,

lib/src/androidTest/java/com/unity3d/ads/test/unit/BroadcastTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import org.json.JSONException;
1919
import org.json.JSONObject;
20+
import org.junit.After;
2021
import org.junit.Before;
2122
import org.junit.Test;
2223
import org.junit.runner.RunWith;
@@ -33,6 +34,11 @@ public void setup() {
3334
ClientProperties.setApplicationContext(InstrumentationRegistry.getTargetContext());
3435
}
3536

37+
@After
38+
public void cleanup() {
39+
BroadcastMonitor.removeAllBroadcastListeners();
40+
}
41+
3642
@Test
3743
public void testOneReceiver() {
3844
final String testAction = "com.unity3d.ads.ACTION_TEST";

lib/src/androidTest/java/com/unity3d/ads/test/unit/EnvironmentCheckTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,9 @@ public void testIsEnvironmentCheckOk() {
2121
public void testProGuardTest() {
2222
assertTrue("Environment check for ProGuard failed", EnvironmentCheck.testProGuard());
2323
}
24+
25+
@Test
26+
public void testCacheDirectory() {
27+
assertTrue("Environment check for cache directory failed", EnvironmentCheck.testCacheDirectory());
28+
}
2429
}

lib/src/main/java/com/unity3d/ads/UnityAds.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,11 @@ public static void initialize(final Activity activity, final String gameId, fina
119119
DeviceLog.info("Initializing Unity Ads " + SdkProperties.getVersionName() + " (" + SdkProperties.getVersionCode() + ") with game id " + gameId + " in production mode");
120120
}
121121

122+
ClientProperties.setGameId(gameId);
123+
ClientProperties.setListener(listener);
124+
ClientProperties.setApplicationContext(activity.getApplicationContext());
125+
SdkProperties.setTestMode(testMode);
126+
122127
if(EnvironmentCheck.isEnvironmentOk()) {
123128
DeviceLog.info("Unity Ads environment check OK");
124129
} else {
@@ -129,11 +134,6 @@ public static void initialize(final Activity activity, final String gameId, fina
129134
return;
130135
}
131136

132-
ClientProperties.setGameId(gameId);
133-
ClientProperties.setListener(listener);
134-
ClientProperties.setApplicationContext(activity.getApplicationContext());
135-
SdkProperties.setTestMode(testMode);
136-
137137
Configuration configuration = new Configuration();
138138
Class[] apiClassList = {
139139
com.unity3d.ads.api.AdUnit.class,

lib/src/main/java/com/unity3d/ads/broadcast/BroadcastMonitor.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ public static void addBroadcastListener(String name, String dataScheme, String[]
3535
public static void removeBroadcastListener(String name) {
3636
if(_eventReceivers != null && _eventReceivers.containsKey(name)) {
3737
ClientProperties.getApplicationContext().unregisterReceiver(_eventReceivers.get(name));
38-
_eventReceivers.remove(_eventReceivers.get(name));
38+
_eventReceivers.remove(name);
3939
}
4040
}
4141

4242
public static void removeAllBroadcastListeners() {
4343
if(_eventReceivers != null) {
4444
for(String key : _eventReceivers.keySet()) {
45-
removeBroadcastListener(key);
45+
ClientProperties.getApplicationContext().unregisterReceiver(_eventReceivers.get(key));
4646
}
4747

4848
_eventReceivers = null;
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package com.unity3d.ads.cache;
2+
3+
import android.content.Context;
4+
import android.os.Build;
5+
import android.os.Environment;
6+
7+
import com.unity3d.ads.log.DeviceLog;
8+
9+
import java.io.File;
10+
import java.io.FileInputStream;
11+
import java.io.FileOutputStream;
12+
13+
public class CacheDirectory {
14+
private static final String TEST_FILE_NAME = "UnityAdsTest.txt";
15+
16+
private String _cacheDirName;
17+
private boolean _initialized = false;
18+
private File _cacheDirectory = null;
19+
20+
public CacheDirectory(String cacheDirName) {
21+
_cacheDirName = cacheDirName;
22+
}
23+
24+
public File getCacheDirectory(Context context) {
25+
if(_initialized) {
26+
return _cacheDirectory;
27+
} else {
28+
_initialized = true;
29+
30+
if(Build.VERSION.SDK_INT > 18) {
31+
if(Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
32+
File externalCache = createCacheDirectory(context.getExternalCacheDir(), _cacheDirName);
33+
if(testCacheDirectory(externalCache)) {
34+
_cacheDirectory = externalCache;
35+
DeviceLog.debug("Unity Ads is using external cache directory: " + externalCache.getAbsolutePath());
36+
return _cacheDirectory;
37+
}
38+
} else {
39+
DeviceLog.debug("External media not mounted");
40+
}
41+
}
42+
43+
File internalCache = context.getFilesDir();
44+
if(testCacheDirectory(internalCache)) {
45+
_cacheDirectory = internalCache;
46+
DeviceLog.debug("Unity Ads is using internal cache directory: " + internalCache.getAbsolutePath());
47+
return _cacheDirectory;
48+
}
49+
50+
DeviceLog.error("Unity Ads failed to initialize cache directory");
51+
return null;
52+
}
53+
}
54+
55+
public File createCacheDirectory(File baseDir, String newDir) {
56+
if(baseDir == null) {
57+
return null;
58+
}
59+
60+
File directory = new File(baseDir, newDir);
61+
62+
directory.mkdirs();
63+
64+
if(directory.isDirectory()) {
65+
return directory;
66+
} else {
67+
return null;
68+
}
69+
}
70+
71+
public boolean testCacheDirectory(File directory) {
72+
if(directory == null || !directory.isDirectory()) {
73+
return false;
74+
}
75+
76+
try {
77+
final byte[] inData = "test".getBytes("UTF-8");
78+
byte[] outData = new byte[inData.length];
79+
File testFile = new File(directory, TEST_FILE_NAME);
80+
81+
FileOutputStream fos = new FileOutputStream(testFile);
82+
fos.write(inData);
83+
fos.flush();
84+
fos.close();
85+
86+
if(directory.listFiles() == null) {
87+
DeviceLog.debug("Failed to list files in directory " + directory.getAbsolutePath());
88+
return false;
89+
}
90+
91+
FileInputStream fis = new FileInputStream(testFile);
92+
int readCount = fis.read(outData, 0, outData.length);
93+
fis.close();
94+
95+
if(!testFile.delete()) {
96+
DeviceLog.debug("Failed to delete testfile " + testFile.getAbsoluteFile());
97+
return false;
98+
}
99+
100+
if(readCount != outData.length) {
101+
DeviceLog.debug("Read buffer size mismatch");
102+
return false;
103+
}
104+
105+
String result = new String(outData, "UTF-8");
106+
107+
if(result.equals("test")) {
108+
return true;
109+
} else {
110+
DeviceLog.debug("Read buffer content mismatch");
111+
return false;
112+
}
113+
} catch(Exception e) {
114+
DeviceLog.debug("Unity Ads exception while testing cache directory " + directory.getAbsolutePath() + ": " + e.getMessage());
115+
return false;
116+
}
117+
}
118+
}

0 commit comments

Comments
 (0)