X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=service%2Fresource-container%2Fexamples%2Fandroid%2FRCSampleClientApp%2Fapp%2Fsrc%2Fmain%2Fjava%2Forg%2Fiotivity%2Fservice%2Fsample%2Fclient%2FContainerClientActivity.java;h=86a005fb74e99f06bde89c70d95ecf88019d3fc5;hb=390866079e285d2c74918432c0d597d5da52f8a0;hp=319d5e1097ff26c34658c29de3bcc02ad737cb87;hpb=17c68b2fd1e74586f85e552eeab4e32dc121f8a0;p=platform%2Fupstream%2Fiotivity.git diff --git a/service/resource-container/examples/android/RCSampleClientApp/app/src/main/java/org/iotivity/service/sample/client/ContainerClientActivity.java b/service/resource-container/examples/android/RCSampleClientApp/app/src/main/java/org/iotivity/service/sample/client/ContainerClientActivity.java index 319d5e1..86a005f 100644 --- a/service/resource-container/examples/android/RCSampleClientApp/app/src/main/java/org/iotivity/service/sample/client/ContainerClientActivity.java +++ b/service/resource-container/examples/android/RCSampleClientApp/app/src/main/java/org/iotivity/service/sample/client/ContainerClientActivity.java @@ -20,8 +20,11 @@ package org.iotivity.service.sample.client; import android.app.Activity; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.util.Log; import android.view.View; +import android.widget.ListView; import android.widget.TextView; import org.iotivity.service.RcsException; @@ -29,47 +32,132 @@ import org.iotivity.service.client.RcsAddress; import org.iotivity.service.client.RcsDiscoveryManager; import org.iotivity.service.client.RcsRemoteResourceObject; +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.List; + /** * It contains the discover resource API for Discovering Container Resource */ + public class ContainerClientActivity extends Activity implements RcsDiscoveryManager.OnResourceDiscoveredListener { + public static final int MSG_ID_ATTRIBUTE_RECEIVED = 0; + public static final int MSG_ID_CACHEDATA_RECEIVED = 1; + private final String LOG_TAG = "[SampleClient] " + this.getClass().getSimpleName(); + private final String RESOURCE_DISCOVERY_URI_KEYWORD = "discomfort"; + + private Handler mHandler; + private ResourceListAdapter mResourceListViewAdapter; + + private ListView mResourceListView; private TextView mLogView; + private List mFoundResourceUris; + private List mFoundResources; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_container_client); + + mFoundResourceUris = new ArrayList(); + mFoundResources = new ArrayList(); + + mHandler = new ContainerClientHandler(this); + + mResourceListViewAdapter = new ResourceListAdapter(this, R.layout.discovered_resource, mFoundResources); + mResourceListView = (ListView) findViewById(R.id.ResourceListView); + mResourceListView.setAdapter(mResourceListViewAdapter); + mLogView = (TextView) findViewById(R.id.log); } public void onDiscoverResourceClick(View v) { try { - RcsDiscoveryManager.getInstance().discoverResourceByType( - RcsAddress.multicast(), "oic.r.sensor", + RcsDiscoveryManager.getInstance().discoverResource( + RcsAddress.multicast(), ContainerClientActivity.this); + + mFoundResourceUris.clear(); + mFoundResources.clear(); + mResourceListViewAdapter.notifyDataSetChanged(); + mLogView.setText(""); } catch (RcsException e) { e.printStackTrace(); } } + private boolean IsFoundResource(String resourceUri) + { + if (mFoundResourceUris.contains(resourceUri)) + return true; + + return false; + } + @Override public void onResourceDiscovered( final RcsRemoteResourceObject discoveredResource) { - Log.i(LOG_TAG, "onResourceDiscovered"); runOnUiThread(new Runnable() { public void run() { try { - mLogView.setText(Utils.resourceInfo(discoveredResource)); + String uri = discoveredResource.getUri(); + Log.i(LOG_TAG, "onResourceDiscovered -- " + uri); + + if (uri.contains(RESOURCE_DISCOVERY_URI_KEYWORD) && !IsFoundResource(uri)) { + mFoundResourceUris.add(uri); + mFoundResources.add(new ResourceListItem(uri, discoveredResource, ContainerClientActivity.this.getHandler())); + mResourceListViewAdapter.notifyDataSetChanged(); + } } catch (RcsException e) { - Utils.showError(ContainerClientActivity.this, LOG_TAG, e); + e.printStackTrace(); } } }); } -} + + private void printLog(String message) { + Log.i(LOG_TAG, message); + mLogView.setText(message); + } + + public Handler getHandler() { + return mHandler; + } + + private static class ContainerClientHandler extends Handler { + private WeakReference mActivityRef; + private String logMsg; + + private ContainerClientHandler(ContainerClientActivity activity) { + mActivityRef = new WeakReference<>(activity); + } + + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + + ContainerClientActivity activity = mActivityRef.get(); + if (activity == null) return; + + switch (msg.what) { + case MSG_ID_ATTRIBUTE_RECEIVED: + logMsg = "-- ATTRIBUTE_RECEIVED\n"; + logMsg += msg.obj.toString(); + break; + + case MSG_ID_CACHEDATA_RECEIVED: + logMsg = "-- CACHEDATA_RECEIVED\n"; + logMsg += msg.obj.toString(); + break; + } + activity.printLog(logMsg); + } + } +} \ No newline at end of file