This repository was archived by the owner on Oct 5, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 86
Expand file tree
/
Copy pathMainActivity.java
More file actions
86 lines (71 loc) · 2.59 KB
/
MainActivity.java
File metadata and controls
86 lines (71 loc) · 2.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
package com.onvif.test;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.widget.TextView;
import java.util.List;
import androidx.appcompat.app.AppCompatActivity;
import be.teletask.onvif.DiscoveryManager;
import be.teletask.onvif.DiscoveryMode;
import be.teletask.onvif.listeners.DiscoveryListener;
import be.teletask.onvif.models.Device;
public class MainActivity extends AppCompatActivity {
private static final String TAG = MainActivity.class.getSimpleName();
TextView resultsText;
WifiManager.MulticastLock lock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.discoverButton).setOnClickListener(v -> {
startDiscovery();
});
resultsText = findViewById(R.id.resultsText);
}
private void startDiscovery() {
resultsText.setText("");
lockMulticast();
DiscoveryManager discoveryManager = new DiscoveryManager();
discoveryManager.setDiscoveryTimeout(10000);
discoveryManager.discover(DiscoveryMode.ONVIF, new DiscoveryListener() {
@Override
public void onDiscoveryStarted() {
Log.d(TAG, "discovery started");
updateText("discovery started");
}
@Override
public void onDevicesFound(List<Device> devices) {
for (Device device : devices) {
Log.d(TAG, "device found: " + device.getHostName());
updateText("device found: " + device.getHostName());
}
}
@Override
public void onDiscoveryFinished() {
Log.d(TAG, "discovery finished");
updateText("discovery finished");
unlockMulticast();
}
});
}
private void updateText(String text) {
new Handler(Looper.getMainLooper()).post(() -> {
String currentText = resultsText.getText().toString();
resultsText.setText(currentText + "\n" + text);
});
}
private void lockMulticast() {
WifiManager wifi = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
if (wifi == null) return;
lock = wifi.createMulticastLock("ONVIF");
lock.acquire();
}
private void unlockMulticast() {
if (lock != null) {
lock.release();
}
}
}