Skip to content

Commit 0dc13f4

Browse files
authored
Merge pull request #5 from ivangulyk/demo
Demo updates
2 parents 0f18850 + 107c844 commit 0dc13f4

37 files changed

Lines changed: 267 additions & 161 deletions

.idea/codeStyles/Project.xml

Lines changed: 0 additions & 29 deletions
This file was deleted.

app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,10 @@
3939
<intent-filter>
4040
<action android:name="android.intent.action.MAIN" />
4141
<action android:name="android.intent.action.VIEW" />
42-
4342
<category android:name="android.intent.category.LAUNCHER" />
4443
</intent-filter>
4544
</activity>
4645

47-
<activity android:name=".MediaActivity" />
4846
<activity android:name=".StreamActivity" />
4947
<activity android:name=".ViewStreamActivity"
5048
android:screenOrientation="landscape"

app/src/main/java/d2d/testing/MainActivity.java

Lines changed: 32 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
package d2d.testing;
22

33
import android.Manifest;
4+
import android.annotation.SuppressLint;
45
import android.content.Intent;
56
import android.content.IntentFilter;
67
import android.content.pm.ActivityInfo;
78
import android.content.pm.PackageManager;
9+
import android.content.res.ColorStateList;
810
import android.net.Uri;
911
import android.hardware.Camera;
10-
import android.net.wifi.WifiManager;
1112
import android.net.wifi.p2p.WifiP2pDevice;
1213
import android.net.wifi.p2p.WifiP2pManager;
1314
import android.os.Bundle;
@@ -16,17 +17,18 @@
1617
import android.support.v4.app.ActivityCompat;
1718
import android.support.v4.view.ViewPager;
1819
import android.support.v7.app.AppCompatActivity;
19-
import android.text.format.Formatter;
2020
import android.view.Menu;
2121
import android.view.MenuInflater;
2222
import android.view.MenuItem;
2323
import android.widget.Toast;
2424

2525
import java.io.IOException;
26+
import java.util.ArrayList;
2627

2728
import d2d.testing.gui.DeviceListAdapter;
2829
import d2d.testing.gui.FragmentDevices;
2930
import d2d.testing.gui.FragmentStreams;
31+
import d2d.testing.gui.StreamDetail;
3032
import d2d.testing.gui.ViewPagerAdapter;
3133
import d2d.testing.net.threads.selectors.RTSPServerSelector;
3234
import d2d.testing.utils.Logger;
@@ -46,12 +48,14 @@ public class MainActivity extends AppCompatActivity {
4648
private boolean storage_has_perm = false;
4749
private Camera mCamera;
4850
private String defaultP2PIp = "192.168.49.1";
51+
MenuItem wifiItem;
4952

5053

5154
private TabLayout tabLayout;
5255
private ViewPager viewPager;
5356
private FragmentDevices devices_fragment;
5457
private FragmentStreams streams_fragment;
58+
ViewPagerAdapter adapter;
5559

5660
WifiP2pController mWifiP2pController;
5761
Permissions wiFiP2pPermissions;
@@ -99,7 +103,7 @@ private void initialWork() {
99103
streams_fragment.setMainActivity(this);
100104
devices_fragment.setMainActivity(this);
101105

102-
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
106+
adapter = new ViewPagerAdapter(getSupportFragmentManager());
103107
adapter.AddFragment(devices_fragment,"WiFi Devices");
104108
adapter.AddFragment(streams_fragment, "Streams Available");
105109

@@ -122,7 +126,7 @@ private void initialWork() {
122126
mIntentFilter.addAction(WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION);
123127

124128
try {
125-
RTSPServerSelector.getInstance().start();
129+
RTSPServerSelector.initiateInstance(this).start();
126130
} catch (IOException e) {
127131
e.printStackTrace();
128132
}
@@ -132,16 +136,23 @@ private void DiscoverPeers(){
132136
mWifiP2pController.discoverPeers(new WifiP2pManager.ActionListener() {
133137
@Override
134138
public void onSuccess() {
139+
Toast.makeText(getApplicationContext(), "Discovery Started", Toast.LENGTH_SHORT).show();
135140
devices_fragment.setTextView("Discovery Started");
136141
}
137142

138143
@Override
139144
public void onFailure(int reason) {
145+
Toast.makeText(getApplicationContext(), "Discovery Starting Failed, make sure WiFI is ON", Toast.LENGTH_SHORT).show();
140146
devices_fragment.setTextView("Discovery Starting Failed");
141147
}
142148
});
143149
}
144150

151+
public void updateStreamsCounter(int count){
152+
adapter.setStreamNumber(count);
153+
adapter.notifyDataSetChanged();
154+
}
155+
145156
private void handleCamera(){
146157
//this.mCamera = getCameraInstance();
147158
//openCameraActivity();
@@ -151,6 +162,8 @@ private void handleCamera(){
151162
public boolean onCreateOptionsMenu(Menu menu) {
152163
MenuInflater inflater = getMenuInflater();
153164
inflater.inflate(R.menu.action_items, menu);
165+
wifiItem = menu.getItem(0);
166+
updateWifiIcon(WifiP2pController.getInstance().isWifiEnabled());
154167
return true;
155168
}
156169
@Override
@@ -208,6 +221,17 @@ public static String getDeviceStatus(int deviceStatus) {
208221
}
209222
}
210223

224+
@SuppressLint("NewApi")
225+
public void updateWifiIcon(boolean wifi) {
226+
if(wifiItem!= null) {
227+
if(wifi) {
228+
wifiItem.setIconTintList(ColorStateList.valueOf(getResources().getColor(android.R.color.holo_green_light)));
229+
} else {
230+
wifiItem.setIconTintList(ColorStateList.valueOf(getResources().getColor(android.R.color.holo_red_dark)));
231+
}
232+
}
233+
}
234+
211235
public void updateThisDevice(WifiP2pDevice device) {
212236
devices_fragment.updateMyDeviceStatus(device);
213237
}
@@ -394,14 +418,17 @@ private boolean checkCameraHardware() {
394418
}
395419
}
396420

421+
public ArrayList<StreamDetail> getStreamlist(){
422+
return streams_fragment.getStreamList();
423+
}
424+
397425
private void openCameraActivity() {
398426
Intent cameraActivityIntent = new Intent(this, CameraActivity.class);
399427
this.startActivity(cameraActivityIntent);
400428
}
401429

402430
private void openStreamActivity() {
403431
Intent streamActivityIntent = new Intent(this, StreamActivity.class);
404-
streamActivityIntent.putExtra("IP", defaultP2PIp);
405432
this.startActivity(streamActivityIntent);
406433
}
407434

@@ -412,12 +439,6 @@ public void openViewStreamActivity(String ip) {
412439
this.startActivity(streamActivityIntent);
413440
}
414441

415-
public String getMyIpAddress(){
416-
WifiManager wm = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
417-
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
418-
return ip;
419-
}
420-
421442
public void setDefaultP2PIp(final String ip){
422443
runOnUiThread(new Runnable() {
423444
public void run() {

app/src/main/java/d2d/testing/StreamActivity.java

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,21 @@
1212
import android.widget.Toast;
1313

1414
import java.io.IOException;
15+
import java.util.ArrayList;
1516

17+
import d2d.testing.gui.StreamDetail;
1618
import d2d.testing.wifip2p.WifiP2pController;
1719
import d2d.testing.net.packets.DataPacketBuilder;
1820
import d2d.testing.net.threads.selectors.RTSPServerSelector;
19-
import d2d.testing.streaming.video.Session;
20-
import d2d.testing.streaming.video.SessionBuilder;
21+
import d2d.testing.streaming.sessions.Session;
22+
import d2d.testing.streaming.sessions.SessionBuilder;
2123
import d2d.testing.streaming.gl.SurfaceView;
2224
import d2d.testing.streaming.rtsp.RtspClient;
2325

2426

2527
public class StreamActivity extends AppCompatActivity implements SurfaceHolder.Callback {
2628

27-
private final static String TAG = "MainActivity";
29+
private final static String TAG = "StreamActivity";
2830

2931
private SurfaceView mSurfaceView;
3032

@@ -35,8 +37,6 @@ public class StreamActivity extends AppCompatActivity implements SurfaceHolder.C
3537
private FloatingActionButton recordButton;
3638
public boolean mRecording = false;
3739

38-
private boolean groupOwner = true;
39-
4040
@Override
4141
protected void onCreate(Bundle savedInstanceState) {
4242
super.onCreate(savedInstanceState);
@@ -57,13 +57,6 @@ protected void onCreate(Bundle savedInstanceState) {
5757

5858
mSurfaceView.getHolder().addCallback(this);
5959

60-
//SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
61-
//editor.putString(RtspServer.KEY_PORT, String.valueOf(12345));
62-
//editor.commit();
63-
// Starts the RTSP server
64-
//mIntent = new Intent(this, RtspServer.class);
65-
//this.startService(mIntent);
66-
6760
recordButton = findViewById(R.id.button_capture);
6861
recordButton.setBackgroundTintList(ColorStateList.valueOf(getResources().getColor(android.R.color.holo_red_dark)));
6962
recordButton.setOnClickListener(new View.OnClickListener() {
@@ -97,18 +90,18 @@ public void surfaceDestroyed(SurfaceHolder holder) {
9790
}
9891

9992
public void startStreaming() {
100-
if(groupOwner) {
93+
if(WifiP2pController.getInstance().isGroupOwner()) {
10194
try {
10295
RTSPServerSelector.getInstance().setAllowLiveStreaming(true);
10396
} catch (IOException e) {
10497
e.printStackTrace();
10598
}
106-
WifiP2pController.getInstance().send(DataPacketBuilder.buildStreamNotifier(true,"192.168.49.1:12345","Group Owner stream"));
99+
WifiP2pController.getInstance().send(DataPacketBuilder.buildStreamNotifier(true,"192.168.49.1:12345/","Group Owner stream"));
107100
Toast.makeText(this,"Retransmitting streaming from server to multiple devices simultaneously", Toast.LENGTH_SHORT).show();
108101
} else {
109102
rtspClient = new RtspClient();
110103
rtspClient.setSession(mSesion);
111-
rtspClient.setStreamPath("/customName");
104+
rtspClient.setStreamPath(setPath());
112105
rtspClient.setServerAddress("192.168.49.1", 12345);
113106
rtspClient.startStream();
114107
Toast.makeText(this,"Retransmitting streaming to GO server for multihopping", Toast.LENGTH_SHORT).show();
@@ -119,13 +112,13 @@ public void startStreaming() {
119112
}
120113

121114
private void stopStreaming() {
122-
if (groupOwner) {
115+
if (WifiP2pController.getInstance().isGroupOwner()) {
123116
try {
124117
RTSPServerSelector.getInstance().setAllowLiveStreaming(false);
125118
} catch (IOException e) {
126119
e.printStackTrace();
127120
}
128-
WifiP2pController.getInstance().send(DataPacketBuilder.buildStreamNotifier(false, "192.168.49.1:12345", "Group Owner stream"));
121+
WifiP2pController.getInstance().send(DataPacketBuilder.buildStreamNotifier(false, "192.168.49.1:12345/", "Group Owner stream"));
129122
} else if (rtspClient.isStreaming()) {
130123
rtspClient.stopStream();
131124
}
@@ -145,4 +138,29 @@ public void onDestroy(){
145138
//this.stopService(mIntent);
146139
mSesion.stopPreview();
147140
}
141+
/*
142+
setPath() esto quiza se deberia comprobar en GO en futuro antes de hacer streaming
143+
*/
144+
private String setPath(){
145+
ArrayList<StreamDetail> list = WifiP2pController.getInstance().getMainActivity().getStreamlist();
146+
147+
String ip = "192.168.49.1:12345";
148+
String name = "Cliente_";
149+
String path = "/Cliente_";
150+
StreamDetail streamDetail = new StreamDetail(name + "1", ip + path + "1");
151+
int clietnNumber = 1;
152+
153+
if(list.contains(streamDetail)) {
154+
for (int i = 2; i < 100; i++) {
155+
streamDetail.setIp(ip + path + i);
156+
streamDetail.setName(name + i);
157+
if (!list.contains(streamDetail)) {
158+
clietnNumber = i;
159+
break;
160+
}
161+
}
162+
}
163+
164+
return path + clietnNumber;
165+
}
148166
}

0 commit comments

Comments
 (0)