Skip to content

Commit f1a6de6

Browse files
Merge pull request #23 from StefanDorresteijn/develop
2 parents 26fa533 + b8405a3 commit f1a6de6

File tree

3 files changed

+38
-8
lines changed

3 files changed

+38
-8
lines changed

android/build.gradle

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
def safeExtGet(prop, fallback) {
2+
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
3+
}
4+
15
buildscript {
26
repositories {
37
jcenter()
@@ -11,12 +15,12 @@ buildscript {
1115
apply plugin: 'com.android.library'
1216

1317
android {
14-
compileSdkVersion 23
15-
buildToolsVersion "23.0.1"
18+
compileSdkVersion safeExtGet('compileSdkVersion', 23)
19+
buildToolsVersion safeExtGet('buildToolsVersion', "23.0.1")
1620

1721
defaultConfig {
18-
minSdkVersion 16
19-
targetSdkVersion 22
22+
minSdkVersion safeExtGet('minSdkVersion', 16)
23+
targetSdkVersion safeExtGet('minSdkVersion', targetSdkVersion)
2024
versionCode 1
2125
versionName "1.0"
2226
}
@@ -30,5 +34,5 @@ repositories {
3034
}
3135

3236
dependencies {
33-
compile 'com.facebook.react:react-native:0.15.+'
37+
implementation 'com.facebook.react:react-native:0.15.+'
3438
}

android/src/main/java/com/robinpowered/react/battery/DeviceBatteryModule.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import android.content.IntentFilter;
66
import android.content.BroadcastReceiver;
77
import android.os.BatteryManager;
8+
import android.util.Log;
89

910
import com.facebook.react.bridge.ReactApplicationContext;
1011
import com.facebook.react.bridge.ReactContextBaseJavaModule;
@@ -13,9 +14,13 @@
1314
import com.facebook.react.bridge.ReactMethod;
1415
import com.facebook.react.bridge.ReadableArray;
1516
import com.facebook.react.bridge.Promise;
17+
import com.facebook.react.modules.core.DeviceEventManagerModule;
1618
import com.facebook.react.modules.core.RCTNativeAppEventEmitter;
1719
import com.facebook.react.bridge.LifecycleEventListener;
1820

21+
import java.util.HashMap;
22+
import java.util.Map;
23+
1924
import javax.annotation.Nullable;
2025

2126
// @link http://developer.android.com/training/monitoring-device-state/battery-monitoring.html
@@ -58,15 +63,27 @@ private WritableNativeMap getJSMap (Intent intent) {
5863
}
5964

6065
public void notifyBatteryStateChanged(Intent intent) {
66+
batteryStatus = intent;
6167
// only emit an event if the Catalyst instance is avialable
6268
if (getReactApplicationContext().hasActiveCatalystInstance()) {
6369
WritableNativeMap params = getJSMap(intent);
64-
getReactApplicationContext()
65-
.getJSModule(RCTNativeAppEventEmitter.class)
66-
.emit(EVENT_NAME, params);
70+
try {
71+
getReactApplicationContext()
72+
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
73+
.emit(EVENT_NAME, params);
74+
} catch (Exception e) {
75+
Log.e(getName(), "notifyBatteryStateChanged called before bundle loaded");
76+
}
6777
}
6878
}
6979

80+
@Override
81+
public Map<String, Object> getConstants() {
82+
final Map<String, Object> constants = new HashMap<>();
83+
constants.put("BATTERY_CHANGE_EVENT", EVENT_NAME);
84+
return constants;
85+
}
86+
7087
@ReactMethod
7188
public void getBatteryLevel(Promise promise) {
7289
if (batteryStatus != null) {

ios/DeviceBattery/DeviceBattery.m

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,20 @@ - (void)dealloc
3333
return @[BATTERY_CHANGE_EVENT];
3434
}
3535

36+
- (NSDictionary *)constantsToExport
37+
{
38+
return @{@"BATTERY_CHANGE_EVENT": BATTERY_CHANGE_EVENT};
39+
}
40+
3641
// UIDevice (UIKit) may only be accessed on main thread
3742
+(BOOL)requiresMainQueueSetup
3843
{
3944
return YES;
4045
}
46+
-(dispatch_queue_t)methodQueue
47+
{
48+
return dispatch_get_main_queue();
49+
}
4150

4251
RCT_REMAP_METHOD(isCharging,
4352
isChargingResolver:(RCTPromiseResolveBlock)resolve

0 commit comments

Comments
 (0)