Skip to content

Commit

Permalink
Merge branch 'develop' into Feature/ContentSharing
Browse files Browse the repository at this point in the history
  • Loading branch information
xionxiao authored Jun 14, 2018
2 parents 16a0f35 + 4349479 commit 31f892d
Show file tree
Hide file tree
Showing 14 changed files with 216 additions and 139 deletions.
6 changes: 1 addition & 5 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
MIT License

Copyright (c) 2017 Cisco Spark
Copyright (c) 2016-2018 Cisco Systems, Inc.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand All @@ -19,7 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

This MIT license does not apply to the following libraries: "com.cisco.spark.android:common-lib",
"com.webex:wme4android-release". Those libraries are covered by
https://www.cisco.com/c/en/us/products/end-user-license-agreement.html.
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Cisco Spark Android SDK Example

> This demo employs Cisco Spark service through [Spark Android SDK](https://github.com/ciscospark/spark-android-sdk).
> This demo support Android device with **Android 6.0** or later
This demo employs Cisco Spark service through [Spark Android SDK](https://github.com/ciscospark/spark-android-sdk).
This demo support Android device with **Android 6.0** or later

## Table of Contents

Expand Down Expand Up @@ -33,7 +33,7 @@
}
```

- Select tools->Android->SDK Manager in Anroid Studio, and install the following packages:
- Select tools->Android->SDK Manager in Android Studio, and install the following packages:
* Android SDK Tools
* Android SDK Platform-Tools
* Android SDK Build-Tools (latest)
Expand Down Expand Up @@ -63,5 +63,5 @@ In Android Studio,open "File" -> "Open", select project.
**Spark ID**
If you have a Spark ID (your email address), you can choose "**Spark ID**" to authorize your device.
**APP ID**
If you have a APP ID (a string token), choose "**App ID**" in the first page, then you need to enter your App JWT token and login.
**Guest ID**
If you have a Guest ID (a string token), choose "**Guest ID**" in the first page, then you need to enter your App JWT token and login.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ dependencies {
compile 'com.google.android.gms:play-services-plus:11.0.4'
compile 'com.android.support:cardview-v7:25.3.1'
compile 'org.greenrobot:eventbus:3.0.0'
compile('com.ciscospark:androidsdk:1.3.0-SNAPSHOT@aar', {
compile('com.ciscospark:androidsdk:1.3.0@aar', {
transitive = true
})
compile 'com.squareup.picasso:picasso:2.5.2'
Expand Down
3 changes: 2 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@

<activity
android:name=".launcher.LauncherActivity"
android:configChanges="screenSize|orientation" />
android:screenOrientation="unspecified"
android:configChanges="orientation|screenSize" />

</application>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import com.cisco.sparksdk.kitchensink.actions.events.LoginEvent;
import com.cisco.sparksdk.kitchensink.actions.events.OnIncomingCallEvent;
import com.cisco.sparksdk.kitchensink.actions.events.RejectEvent;
import com.ciscospark.androidsdk.Result;
import com.ciscospark.androidsdk.Spark;
import com.ciscospark.androidsdk.phone.Call;
import com.ciscospark.androidsdk.phone.CallObserver;
Expand Down Expand Up @@ -95,6 +96,19 @@ public void setSpeakerPhoneOn(boolean on) {
isSpeakerOn = on;
}

public void setMaxBandWidth(int maxBandWidth) {
if (phone != null) {
phone.setVideoMaxBandwidth(maxBandWidth);
}
}

public int getMaxBandWidth() {
if (phone != null) {
return phone.getVideoMaxBandwidth();
}
return -1;
}

public void register() {
phone = spark.phone();
phone.register(r -> {
Expand Down Expand Up @@ -129,10 +143,10 @@ public CallCap getCallCapability() {

public void dial(String callee, View localView, View remoteView, View screenSharing) {
isDialing = true;
phone.dial(callee, getMediaOption(localView, remoteView, screenSharing), (result) -> {
phone.dial(callee, getMediaOption(localView, remoteView, screenSharing), (Result<Call> result) -> {
if (result.isSuccessful()) {
activeCall = result.getData();
if (isDialing == false) {
if (!isDialing || activeCall == null) {
hangup();
} else {
activeCall.setObserver(callObserver);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,13 @@
import com.cisco.sparksdk.kitchensink.actions.IAction;
import com.cisco.sparksdk.kitchensink.actions.SparkAgent;
import com.cisco.sparksdk.kitchensink.actions.events.SearchRoomCompleteEvent;
import com.github.benoitdion.ln.Ln;


public class SearchRoomAction implements IAction {
@Override
public void execute() {
SparkAgent agent = SparkAgent.getInstance();
agent.getSpark().rooms().list(null, 0, null, null, result -> {
Ln.e(result.getData().toString());
new SearchRoomCompleteEvent(result).post();
});
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import com.cisco.sparksdk.kitchensink.actions.SparkAgent;
import com.cisco.sparksdk.kitchensink.actions.events.LoginEvent;
import com.ciscospark.androidsdk.Spark;
import com.ciscospark.androidsdk.auth.OAuthTestUserAuthenticator;
import com.ciscospark.androidsdk.auth.OAuthWebViewAuthenticator;

import static com.cisco.sparksdk.kitchensink.KitchenSinkApp.getApplication;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import android.view.View;
import android.widget.RadioButton;
import android.widget.Spinner;
import android.widget.Switch;

import com.cisco.sparksdk.kitchensink.R;
Expand All @@ -37,15 +38,20 @@

import org.greenrobot.eventbus.Subscribe;

import java.util.Arrays;

import butterknife.BindView;
import butterknife.OnCheckedChanged;
import butterknife.OnClick;
import butterknife.OnItemSelected;

/**
* A simple {@link BaseFragment} subclass.
* Setup fragment, {@link BaseFragment} subclass.
*/
public class SetupFragment extends BaseFragment {

final private int BANDWIDTH[] = {64000, 177000, 384000, 768000, 2000000, 3000000, 4000000};

private SparkAgent agent;

@BindView(R.id.preview)
Expand All @@ -69,6 +75,9 @@ public class SetupFragment extends BaseFragment {
@BindView(R.id.closePreview)
RadioButton radioClosePreview;

@BindView(R.id.spinnerBandWidth)
Spinner maxBandwidth;

public SetupFragment() {
// Required empty public constructor
setLayout(R.layout.fragment_setup);
Expand Down Expand Up @@ -113,6 +122,15 @@ private void setupWidgetStates() {
radioClosePreview.setChecked(true);
break;
}

// Setup max bandwidth
int bw = agent.getMaxBandWidth();
int index = Arrays.binarySearch(BANDWIDTH, bw);
if (index == -1) {
// default max bandwidth 2000000
index = 4;
}
maxBandwidth.setSelection(index);
}

@OnClick({R.id.audioCallOnly, R.id.audioVideoCall})
Expand Down Expand Up @@ -165,6 +183,11 @@ private void setFrontCamera() {
agent.startPreview(preview);
}

@OnItemSelected(R.id.spinnerBandWidth)
public void onMaxBandWidthSpinnerSelected(Spinner spinner, int position) {
agent.setMaxBandWidth(BANDWIDTH[position]);
}

@SuppressWarnings("unused")
@Subscribe
public void onEventMainThread(PermissionAcquiredEvent event) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,85 +32,91 @@

public class RoomFragment extends BaseFragment {

@BindView(R.id.room_list)
public ListView listView;

private List<Room> roomList;

public RoomFragment() {
// Required empty public constructor
setLayout(R.layout.fragment_room);
roomList = new ArrayList<>();
}

@Override
public void onStart() {
super.onStart();
new SearchRoomAction().execute();
}

@OnItemClick(R.id.room_list)
public void roomListItemClicked(int position) {
final Room p = roomList.get(position);
Fragment fm = ((LauncherActivity) getActivity()).getFragment();
((DialPagersFragment) fm).gotoDialPage(p.getId());
}

@Override
public void onActivityCreated(Bundle saved) {
super.onActivityCreated(saved);
RoomFragment.RoomAdapter adapter = new RoomFragment.RoomAdapter(getActivity(), R.layout.listview_person, roomList);
listView.setAdapter(adapter);
}

class RoomAdapter extends ArrayAdapter<Room> {

private int resourceId;


public RoomAdapter(Context context, int textViewResourceId,
List<Room> objects) {
super(context, textViewResourceId, objects);
resourceId = textViewResourceId;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
RoomFragment.ViewHolder holder = new RoomFragment.ViewHolder(view);

Room room = getItem(position);

holder.name.setText(room.getTitle());
holder.email.setText(room.getType().toString());
return view;
}
}

static class ViewHolder {
@BindView(R.id.person_name)
TextView name;

@BindView(R.id.person_email)
TextView email;

@BindView(R.id.person_icon)
ImageView avatar;

public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}

@SuppressWarnings("unused")
@Subscribe
public void onEventMainThread(SearchRoomCompleteEvent event) {
dismissBusyIndicator();
if (event.isSuccessful()) {
List<Room> result = (List<Room>) event.getResult().getData();
roomList.clear();
roomList.addAll(result);
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
}
}
@BindView(R.id.room_list)
public ListView listView;

private List<Room> roomList;

public RoomFragment() {
// Required empty public constructor
setLayout(R.layout.fragment_room);
roomList = new ArrayList<>();
}

@Override
public void onStart() {
super.onStart();
//new SearchRoomAction().execute();
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
new SearchRoomAction().execute();
return super.onCreateView(inflater, container, savedInstanceState);
}

@OnItemClick(R.id.room_list)
public void roomListItemClicked(int position) {
final Room p = roomList.get(position);
Fragment fm = ((LauncherActivity) getActivity()).getFragment();
((DialPagersFragment) fm).gotoDialPage(p.getId());
}

@Override
public void onActivityCreated(Bundle saved) {
super.onActivityCreated(saved);
RoomFragment.RoomAdapter adapter = new RoomFragment.RoomAdapter(getActivity(), R.layout.listview_person, roomList);
listView.setAdapter(adapter);
}

class RoomAdapter extends ArrayAdapter<Room> {

private int resourceId;


public RoomAdapter(Context context, int textViewResourceId,
List<Room> objects) {
super(context, textViewResourceId, objects);
resourceId = textViewResourceId;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = LayoutInflater.from(getContext()).inflate(resourceId, null);
RoomFragment.ViewHolder holder = new RoomFragment.ViewHolder(view);

Room room = getItem(position);

holder.name.setText(room.getTitle());
holder.email.setText(room.getType().toString());
return view;
}
}

static class ViewHolder {
@BindView(R.id.person_name)
TextView name;

@BindView(R.id.person_email)
TextView email;

@BindView(R.id.person_icon)
ImageView avatar;

public ViewHolder(View view) {
ButterKnife.bind(this, view);
}
}

@SuppressWarnings("unused")
@Subscribe
public void onEventMainThread(SearchRoomCompleteEvent event) {
dismissBusyIndicator();
if (event.isSuccessful()) {
List<Room> result = (List<Room>) event.getResult().getData();
roomList.clear();
roomList.addAll(result);
((BaseAdapter) listView.getAdapter()).notifyDataSetChanged();
}
}
}
6 changes: 3 additions & 3 deletions app/src/main/res/layout/fragment_call.xml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
tools:layout_editor_absoluteX="8dp"
tools:layout_editor_absoluteY="8dp">

<com.webex.wseclient.WseSurfaceView
<com.ciscospark.androidsdk.phone.MediaRenderView
android:id="@+id/localView"
android:layout_width="60dp"
android:layout_height="80dp"
Expand All @@ -22,7 +22,7 @@
app:layout_constraintTop_toTopOf="@+id/remoteView"
tools:ignore="MissingRegistered" />

<com.webex.wseclient.WseSurfaceView
<com.ciscospark.androidsdk.phone.MediaRenderView
android:id="@+id/screenShare"
android:layout_width="60dp"
android:layout_height="80dp"
Expand All @@ -35,7 +35,7 @@
app:layout_constraintTop_toBottomOf="@+id/localView"
tools:ignore="MissingRegistered" />

<com.webex.wseclient.WseSurfaceView
<com.ciscospark.androidsdk.phone.MediaRenderView
android:id="@+id/remoteView"
android:layout_width="0dp"
android:layout_height="200dp"
Expand Down
Loading

0 comments on commit 31f892d

Please sign in to comment.