Commit 9ef3abdd authored by Ishankha K.C's avatar Ishankha K.C

use multiple devices

parent d73d445b
...@@ -18,6 +18,9 @@ ...@@ -18,6 +18,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.BabyCare" android:theme="@style/Theme.BabyCare"
tools:targetApi="31"> tools:targetApi="31">
<activity
android:name=".activities.BabyCamListActivity"
android:exported="false" />
<activity <activity
android:name=".activities.LiveVocalActivity" android:name=".activities.LiveVocalActivity"
android:exported="false" /> android:exported="false" />
......
...@@ -40,7 +40,7 @@ public class DashboardActivity extends AppCompatActivity { ...@@ -40,7 +40,7 @@ public class DashboardActivity extends AppCompatActivity {
btn6 = findViewById(R.id.btn_settings); btn6 = findViewById(R.id.btn_settings);
btn1.setOnClickListener(v -> { btn1.setOnClickListener(v -> {
Intent intent = new Intent(this, LiveFeedActivity.class); Intent intent = new Intent(this, BabyCamListActivity.class);
startActivity(intent); startActivity(intent);
animationChanger(this); animationChanger(this);
}); });
......
...@@ -56,7 +56,7 @@ public class LiveFeedActivity extends AppCompatActivity { ...@@ -56,7 +56,7 @@ public class LiveFeedActivity extends AppCompatActivity {
private Handler handler = new Handler(); private Handler handler = new Handler();
private Runnable updateRunnable; private Runnable updateRunnable;
private WebSocket webSocket; private WebSocket webSocket;
private String deviceUid = "8563efa6"; private String deviceUid = "";
private AuthenticationDto authDto; private AuthenticationDto authDto;
...@@ -74,6 +74,11 @@ public class LiveFeedActivity extends AppCompatActivity { ...@@ -74,6 +74,11 @@ public class LiveFeedActivity extends AppCompatActivity {
Toast.makeText(this, "Error getting token, Please refresh", Toast.LENGTH_SHORT).show(); Toast.makeText(this, "Error getting token, Please refresh", Toast.LENGTH_SHORT).show();
} }
// get extra
if (getIntent().hasExtra("deviceUid")) {
deviceUid = getIntent().getStringExtra("deviceUid");
}
// Replace the device UID in the URLs // Replace the device UID in the URLs
LIVE_FEED_URL = LIVE_FEED_URL.replace("{device_uid}", deviceUid); LIVE_FEED_URL = LIVE_FEED_URL.replace("{device_uid}", deviceUid);
......
package com.kaluwa.enterprises.babycare.adapter;
import static com.kaluwa.enterprises.babycare.utils.Utils.animationChanger;
import static com.kaluwa.enterprises.babycare.utils.Utils.babyAgeCalculate;
import static com.kaluwa.enterprises.babycare.utils.Utils.convertByteArrayToBitmap;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.fragment.app.FragmentActivity;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.imageview.ShapeableImageView;
import com.kaluwa.enterprises.babycare.R;
import com.kaluwa.enterprises.babycare.activities.BabyCamListActivity;
import com.kaluwa.enterprises.babycare.activities.LiveFeedActivity;
import com.kaluwa.enterprises.babycare.dialogs.EditBabyDialog;
import com.kaluwa.enterprises.babycare.dto.BabyDto;
import java.time.LocalDate;
import java.util.List;
public class BabyCamListAdapter extends RecyclerView.Adapter<BabyCamListAdapter.BabyCamListItemHolder> {
private final static String TAG = "BabyCamListAdapter";
private Context context;
private List<BabyDto> babyList;
public BabyCamListAdapter(BabyCamListActivity context, List<BabyDto> babyList) {
this.context = context;
this.babyList = babyList;
}
@NonNull
@Override
public BabyCamListAdapter.BabyCamListItemHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.baby_rv_item, parent, false);
return new BabyCamListItemHolder(view);
}
@Override
public void onBindViewHolder(@NonNull BabyCamListAdapter.BabyCamListItemHolder holder, int position) {
BabyDto babyDto = babyList.get(position);
String firstname = babyDto.getFirstName();
String lastname = babyDto.getLastName();
LocalDate dob = babyDto.getDob();
String sex = babyDto.getSex();
String notes = babyDto.getNotes();
Boolean isActive = babyDto.getIsActive();
byte[] imageData = babyDto.getImageData();
if (lastname != null) {
holder.tvBabyName.setText(firstname + " " + lastname);
} else {
holder.tvBabyName.setText(firstname);
}
String age = babyAgeCalculate(dob);
holder.tvBabyAge.setText(age != null ? age : "Not Available");
holder.tvBabySex.setText(sex);
if (!TextUtils.isEmpty(notes)) {
holder.tvBabyDDespContent.setText(notes);
} else {
holder.tvBabyDDespTitle.setText("Status >");
holder.tvBabyDDespContent.setTextColor(isActive ? context.getResources().getColor(R.color.success_green) : context.getResources().getColor(R.color.cancel_red));
holder.tvBabyDDespContent.setText(isActive ? "Active" : "Inactive");
}
if (imageData != null) {
try {
Bitmap bitmap = convertByteArrayToBitmap(imageData);
holder.ivBabyImage.setImageBitmap(bitmap);
} catch (Exception e) {
Log.e(TAG, "Error occurred: " + e.getMessage());
Toast.makeText(context, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
// Handle item click
holder.clBabyItem.setOnClickListener(v -> {
// Open live feed activity
if (babyDto.getDeviceUid() == null || babyDto.getDeviceUid().isEmpty()) {
Toast.makeText(context, "No device is associated with this baby.", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "Opening live feed for " + babyDto.getFirstName(), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(context, LiveFeedActivity.class);
intent.putExtra("deviceUid", babyDto.getDeviceUid());
context.startActivity(intent);
animationChanger((Activity) context);
}
});
}
@Override
public int getItemCount() {
return babyList.size();
}
public static class BabyCamListItemHolder extends RecyclerView.ViewHolder {
public ConstraintLayout clBabyItem;
public TextView tvBabyName, tvBabyAge, tvBabySex, tvBabyDDespTitle, tvBabyDDespContent;
public ShapeableImageView ivBabyImage;
public BabyCamListItemHolder(@NonNull View view) {
super(view);
clBabyItem = view.findViewById(R.id.baby_item);
tvBabyName = view.findViewById(R.id.baby_item_name);
tvBabyAge = view.findViewById(R.id.baby_item_tv_age_content);
tvBabySex = view.findViewById(R.id.baby_item_tv_sex_content);
tvBabyDDespTitle = view.findViewById(R.id.baby_item_tv_desp_title);
tvBabyDDespContent = view.findViewById(R.id.baby_item_tv_desp_content);
ivBabyImage = view.findViewById(R.id.baby_item_iv_image);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/swipeContainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".activities.BabyCamListActivity">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
layout="@layout/appbar"/>
<ImageView
android:id="@+id/background"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/b_care_action_bar"
app:layout_constraintBottom_toBottomOf="parent"
android:src="@drawable/background"
android:contentDescription="background-image"
android:scaleType="centerCrop"
android:alpha="0.4"/>
<RelativeLayout
android:id="@+id/rl_header"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rl_background"
android:backgroundTint="#62178F"
app:layout_constraintTop_toTopOf="@+id/background"
app:layout_constraintStart_toStartOf="@id/background"
app:layout_constraintEnd_toEndOf="@id/background"
android:padding="8dp">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Baby Cam List"
android:textAlignment="center"
android:textColor="@color/white"
android:textAllCaps="true"
android:fontFamily="@font/inknut_antiqua_regular"
android:textSize="20sp"
android:gravity="center"/>
</RelativeLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/bcl_baby_dash_rv"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintTop_toBottomOf="@id/rl_header"
app:layout_constraintBottom_toBottomOf="@id/background"
app:layout_constraintEnd_toEndOf="@id/background"
app:layout_constraintStart_toStartOf="@id/background"
android:scrollbars="none"
android:paddingTop="6dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:paddingBottom="6dp"/>
<TextView
android:id="@+id/no_content_message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="No content available"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:textStyle="bold"
android:visibility="gone"/>
<View
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#99D5C5DF"
android:visibility="gone"
android:clickable="true"
android:focusable="true"/>
<com.github.ybq.android.spinkit.SpinKitView
android:id="@+id/progress_bar"
style="@style/SpinKitView.Large.DoubleBounce"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
app:SpinKit_Color="@color/purple"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
android:visibility="gone"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment