Skip to content

Commit 6661c05

Browse files
Merge pull request #474 from TakayukiHoshi1984/modify_android10
Android 10 対応
2 parents 11cd824 + 5b2e23d commit 6661c05

20 files changed

Lines changed: 581 additions & 525 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/profile/HostConnectionProfile.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import android.content.pm.PackageManager;
1414
import android.net.wifi.WifiManager;
1515
import android.nfc.NfcAdapter;
16+
import android.os.Build;
1617
import android.util.Log;
1718

1819
import org.deviceconnect.android.deviceplugin.host.BuildConfig;
@@ -295,16 +296,19 @@ public HostConnectionProfile(final BluetoothAdapter bluetoothAdapter) {
295296
addApi(mGetBluetoothApi);
296297
addApi(mGetBleApi);
297298
addApi(mGetNfcApi);
298-
addApi(mPutWifiApi);
299299
addApi(mPutBluetoothApi);
300300
addApi(mPutBleApi);
301-
addApi(mDeleteWifiApi);
302301
addApi(mDeleteBluetoothApi);
303302
addApi(mDeleteBleApi);
304303
addApi(mPutOnWifiChangeApi);
305304
addApi(mPutOnBluetoothChangeApi);
306305
addApi(mDeleteOnWifiChange);
307306
addApi(mDeleteOnBluetoothChange);
307+
308+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.Q) {
309+
addApi(mPutWifiApi);
310+
addApi(mDeleteWifiApi);
311+
}
308312
}
309313

310314
/**

dConnectDevicePlugin/dConnectDeviceTheta/app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
apply plugin: 'com.android.application'
22

33
android {
4-
compileSdkVersion 26
5-
buildToolsVersion '28.0.3'
4+
compileSdkVersion 29
65

76
def getVersionName = { ->
87
def version
@@ -18,7 +17,7 @@ android {
1817
defaultConfig {
1918
applicationId "org.deviceconnect.android.deviceplugin.theta"
2019
minSdkVersion 16
21-
targetSdkVersion 26
20+
targetSdkVersion 29
2221
versionCode 7
2322
versionName getVersionName()
2423
}
@@ -71,6 +70,7 @@ repositories {
7170
dependencies {
7271
implementation fileTree(include: '*.jar', dir: 'libs')
7372
implementation 'org.deviceconnect:dconnect-device-plugin-sdk:2.5.1'
74-
implementation 'com.squareup.okhttp:okhttp:2.5.0'
73+
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
74+
implementation 'com.android.support:support-v4:26.1.0'
7575
implementation 'com.burgstaller:okhttp-digest:1.16'
7676
}

dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/ThetaDeviceService.java

Lines changed: 23 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,10 @@
66
*/
77
package org.deviceconnect.android.deviceplugin.theta;
88

9-
import android.content.BroadcastReceiver;
10-
import android.content.Context;
9+
import android.annotation.TargetApi;
1110
import android.content.Intent;
12-
import android.content.IntentFilter;
13-
import android.net.NetworkInfo;
14-
import android.net.wifi.WifiInfo;
15-
import android.net.wifi.WifiManager;
11+
import android.net.wifi.ScanResult;
1612
import android.os.Build;
17-
import android.util.Log;
1813

1914
import com.theta360.lib.PtpipInitiator;
2015
import com.theta360.lib.ThetaException;
@@ -23,7 +18,6 @@
2318
import org.deviceconnect.android.deviceplugin.theta.core.ThetaDeviceClient;
2419
import org.deviceconnect.android.deviceplugin.theta.core.ThetaDeviceEventListener;
2520
import org.deviceconnect.android.deviceplugin.theta.core.ThetaDeviceManager;
26-
import org.deviceconnect.android.deviceplugin.theta.core.wifi.WifiStateEventListener;
2721
import org.deviceconnect.android.deviceplugin.theta.profile.ThetaMediaStreamRecordingProfile;
2822
import org.deviceconnect.android.deviceplugin.theta.profile.ThetaOmnidirectionalImageProfile;
2923
import org.deviceconnect.android.deviceplugin.theta.profile.ThetaSystemProfile;
@@ -46,8 +40,11 @@
4640
*
4741
* @author NTT DOCOMO, INC.
4842
*/
49-
public class ThetaDeviceService extends DConnectMessageService
50-
implements ThetaDeviceEventListener {
43+
public class ThetaDeviceService extends DConnectMessageService implements ThetaDeviceEventListener {
44+
45+
public static final String ACTION_CONNECT_WIFI = "action.CONNECT_WIFI";
46+
47+
public static final String EXTRA_SCAN_RESULT = "scanResult";
5148

5249
/** ロガー. */
5350
private final Logger mLogger = Logger.getLogger("theta.dplugin");
@@ -56,54 +53,35 @@ public class ThetaDeviceService extends DConnectMessageService
5653
private ThetaDeviceClient mClient;
5754
private FileManager mFileMgr;
5855
private ThetaMediaStreamRecordingProfile mThetaMediaStreamRecording;
59-
private WifiStateEventListener mListener;
60-
private BroadcastReceiver mWifiReceiver = new BroadcastReceiver() {
61-
@Override
62-
public void onReceive(Context context, Intent intent) {
63-
String action = intent.getAction();
64-
if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
65-
WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
66-
mListener.onNetworkChanged(wifiInfo);
67-
} else if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
68-
int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
69-
switch (state) {
70-
case WifiManager.WIFI_STATE_DISABLED:
71-
mListener.onWiFiDisabled();
72-
break;
73-
case WifiManager.WIFI_STATE_ENABLED:
74-
mListener.onWiFiEnabled();
75-
break;
76-
default:
77-
break;
78-
}
79-
}
56+
57+
@Override
58+
public int onStartCommand(final Intent intent, final int flags, final int startId) {
59+
int result = super.onStartCommand(intent, flags, startId);
60+
if (intent != null && ACTION_CONNECT_WIFI.equals(intent.getAction())) {
61+
ScanResult scanResult = intent.getParcelableExtra(EXTRA_SCAN_RESULT);
62+
connectWifi(scanResult);
8063
}
81-
};
64+
return result;
65+
}
66+
8267
@Override
8368
public void onCreate() {
8469
super.onCreate();
85-
mListener = ((ThetaDeviceApplication) getApplication()).getDeviceManager();
70+
8671
ThetaDeviceApplication app = (ThetaDeviceApplication) getApplication();
8772
mDeviceMgr = app.getDeviceManager();
8873
mDeviceMgr.registerDeviceEventListener(this);
89-
mDeviceMgr.checkConnectedDevice();
9074
mDeviceMgr.startDeviceDetection();
9175
mClient = new ThetaDeviceClient(mDeviceMgr);
9276
mFileMgr = new FileManager(this);
9377

9478
EventManager.INSTANCE.setController(new MemoryCacheController());
9579

9680
getServiceProvider().addService(new ThetaImageService(app.getHeadTracker()));
97-
98-
IntentFilter filter = new IntentFilter();
99-
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
100-
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
101-
registerReceiver(mWifiReceiver, filter);
10281
}
10382

10483
@Override
10584
public void onDestroy() {
106-
unregisterReceiver(mWifiReceiver);
10785
mDeviceMgr.dispose();
10886
mDeviceMgr.unregisterDeviceEventListener(this);
10987
try {
@@ -201,4 +179,9 @@ private void resetPluginResource() {
201179
}
202180
}
203181

182+
@TargetApi(Build.VERSION_CODES.Q)
183+
private void connectWifi(final ScanResult result) {
184+
ThetaDeviceManager deviceManager = ((ThetaDeviceApplication) getApplication()).getDeviceManager();
185+
deviceManager.requestNetwork(result.SSID);
186+
}
204187
}

dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaDeviceActivity.java

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -37,50 +37,23 @@ public class ThetaDeviceActivity extends FragmentActivity {
3737
* An instance of {@link ThetaDeviceManager}.
3838
*/
3939
private ThetaDeviceManager mDeviceMgr;
40-
private WifiStateEventListener mListener;
41-
private BroadcastReceiver mWifiReceiver = new BroadcastReceiver() {
42-
@Override
43-
public void onReceive(Context context, Intent intent) {
44-
String action = intent.getAction();
45-
if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(action)) {
46-
WifiInfo wifiInfo = intent.getParcelableExtra(WifiManager.EXTRA_WIFI_INFO);
47-
mListener.onNetworkChanged(wifiInfo);
48-
} else if (WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)) {
49-
int state = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_UNKNOWN);
50-
switch (state) {
51-
case WifiManager.WIFI_STATE_DISABLED:
52-
mListener.onWiFiDisabled();
53-
break;
54-
case WifiManager.WIFI_STATE_ENABLED:
55-
mListener.onWiFiEnabled();
56-
break;
57-
default:
58-
break;
59-
}
60-
}
61-
}
62-
};
6340

6441
public void onCreate(Bundle savedInstanceState) {
6542
super.onCreate(savedInstanceState);
6643
mDeviceMgr = getDeviceManager();
44+
mDeviceMgr.startDeviceDetection();
6745
Fragment fragment = getSupportFragmentManager().findFragmentByTag(TAG_LIST);
6846
if (fragment == null) {
6947
fragment = ThetaGalleryFragment.newInstance(mDeviceMgr);
7048
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
7149
ft.add(android.R.id.content, fragment, TAG_LIST);
7250
ft.commit();
7351
}
74-
mListener = getDeviceManager();
75-
IntentFilter filter = new IntentFilter();
76-
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
77-
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
78-
registerReceiver(mWifiReceiver, filter);
7952
}
53+
8054
@Override
8155
public void onDestroy() {
8256
super.onDestroy();
83-
unregisterReceiver(mWifiReceiver);
8457
}
8558

8659
public ThetaDeviceManager getDeviceManager() {

dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/activity/ThetaDeviceSettingsActivity.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
*/
77
package org.deviceconnect.android.deviceplugin.theta.activity;
88

9+
import android.os.Build;
910
import android.os.Bundle;
1011
import android.support.v4.app.Fragment;
1112
import android.support.v4.app.FragmentManager;
@@ -15,6 +16,7 @@
1516
import org.deviceconnect.android.deviceplugin.theta.core.ThetaDeviceManager;
1617
import org.deviceconnect.android.deviceplugin.theta.core.ThetaDeviceModel;
1718
import org.deviceconnect.android.deviceplugin.theta.fragment.ConfirmationFragment;
19+
import org.deviceconnect.android.deviceplugin.theta.fragment.ConfirmationFragmentForApi29;
1820
import org.deviceconnect.android.deviceplugin.theta.fragment.MovieModeFragment;
1921
import org.deviceconnect.android.deviceplugin.theta.fragment.PhotoModeFragment;
2022
import org.deviceconnect.android.deviceplugin.theta.fragment.SettingsFragment;
@@ -40,7 +42,7 @@ public class ThetaDeviceSettingsActivity extends DConnectSettingPageFragmentActi
4042
mSummary,
4143
mPhotoMode,
4244
mMovieMode,
43-
new ConfirmationFragment()
45+
Build.VERSION.SDK_INT < Build.VERSION_CODES.Q ? new ConfirmationFragment() : new ConfirmationFragmentForApi29()
4446
};
4547

4648
private ThetaDeviceModel mSelectedModel = ThetaDeviceModel.THETA_S;
@@ -72,7 +74,6 @@ protected void onRestoreInstanceState(final Bundle savedInstanceState) {
7274
@Override
7375
protected void onResume() {
7476
super.onResume();
75-
getDeviceManager().checkConnectedDevice();
7677
getDeviceManager().startDeviceDetection();
7778
}
7879

dConnectDevicePlugin/dConnectDeviceTheta/app/src/main/java/org/deviceconnect/android/deviceplugin/theta/core/ThetaDeviceFactory.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,22 @@
99

1010
import java.net.InetAddress;
1111

12-
class ThetaDeviceFactory {
12+
import javax.net.SocketFactory;
13+
14+
public class ThetaDeviceFactory {
1315

1416
private static final String DEFAULT_HOST = "192.168.1.1";
1517

1618
private ThetaDeviceFactory() {
1719
}
1820

1921
public static ThetaDevice createDeviceFromAccessPoint(final Context context, final WifiInfo wifiInfo) {
20-
String ssId = parseSSID(wifiInfo);
21-
if (ssId == null) {
22+
return createDeviceFromAccessPoint(context, parseSSID(wifiInfo), null);
23+
}
24+
25+
public static ThetaDevice createDeviceFromAccessPoint(final Context context, final String ssId, final SocketFactory socketFactory) {
26+
String name = ssId;
27+
if (name == null) {
2228
WifiManager wm = (WifiManager) context.getApplicationContext()
2329
.getSystemService(Context.WIFI_SERVICE);
2430
if (wm == null) {
@@ -28,21 +34,21 @@ public static ThetaDevice createDeviceFromAccessPoint(final Context context, fin
2834
if (info == null) {
2935
return null;
3036
}
31-
ssId = info.getSSID().replace("\"", "");
37+
name = info.getSSID().replace("\"", "");
3238
}
33-
ThetaDeviceModel model = parseModel(ssId);
39+
ThetaDeviceModel model = parseModel(name);
3440
switch (model) {
3541
case THETA_M15:
36-
ThetaM15 m15 = new ThetaM15(context, ssId);
42+
ThetaM15 m15 = new ThetaM15(context, name);
3743
if (m15.initialize()) {
3844
return m15;
3945
} else {
4046
return null;
4147
}
4248
case THETA_S:
43-
return new ThetaS(ssId, DEFAULT_HOST);
49+
return new ThetaS(name, DEFAULT_HOST, socketFactory);
4450
case THETA_V:
45-
return new ThetaV(ssId, DEFAULT_HOST, null);
51+
return new ThetaV(name, DEFAULT_HOST, null, socketFactory);
4652
default:
4753
return null;
4854
}
@@ -63,7 +69,7 @@ public static ThetaDevice createDeviceFromNsdServiceInfo(final NsdServiceInfo se
6369
case THETA_V:
6470
String password = parsePasswordForDigestAuthentication(serviceName);
6571
Credentials credentials = new Credentials(serviceName, password);
66-
return new ThetaV(serviceName, host.getHostAddress(), credentials);
72+
return new ThetaV(serviceName, host.getHostAddress(), credentials, null);
6773
default:
6874
return null;
6975
}

0 commit comments

Comments
 (0)