Skip to content

Instantly share code, notes, and snippets.

@Ayyagaries
Created May 31, 2019 19:00
Show Gist options
  • Save Ayyagaries/89be3150ac1436c22c8b4140741e508b to your computer and use it in GitHub Desktop.
Save Ayyagaries/89be3150ac1436c22c8b4140741e508b to your computer and use it in GitHub Desktop.
jobs
package com.intellicentrics.sec3ure_badge;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.util.Log;
import com.ix.ebadgesdk.bean.ImageConfig;
import com.ix.ebadgesdk.bean.ImageData;
import java.nio.ByteBuffer;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
public class BadgeInfoPrep {
private Context context;
static final int SEND_IMAGE =0;
private final int CHECKIN_PAGE_ID=1;
private final int CHECKOUT_PAGE_ID=0;
static final long ONE_MINUTE_IN_MILLIS=60000;
static final int SET_PAGE = 1;
static final int REFRESH_PAGE = 2;
static final int CLEAR_ID=3;
static final int CLEAR_ALL=4;
private ArrayList<BitmapInfo> list ;
private ArrayList<LongTermAssets> longTermAssets;
private String toDo;
ArrayList<ebadgeJob> jobs;
public BadgeInfoPrep(ArrayList<BitmapInfo> list, ArrayList<LongTermAssets> longTermAssets,String todo) {
this.list=list;
this.longTermAssets=longTermAssets;
this.toDo=todo;
setPageInfo();
}
private void setPageInfo(){
jobs= new ArrayList<>();
ebadgeJob job ;
ArrayList<Integer> idsTodelete=new ArrayList<Integer>();
if(list.size()>0) {
for (int i = 0; i < list.size(); i++) {
//if(list.get(i).getShouldDeleteImage()){
idsTodelete.add(list.get(i).getImageid());
// }
}
Log.d("TEST","The size of the image ids to delete are " +idsTodelete.size());
if(idsTodelete.size()>0){
Log.d("TEST","I am deleting this image with ID " +idsTodelete.size());
job = new ebadgeJob();
job.jobType = CLEAR_ID;
job.id_list = toArray(idsTodelete);
jobs.add(job);
}
Log.d("TEST","The size of the image that changed " +list.size());
for(int i=0;i<list.size();i++){
ImageData id = sendImgHere(bitmapTo8BitImage(list.get(i).getImageBitmap()),list.get(i).getImageid(), list.get(i).getImageswidth(), list.get(i).getImageHeight(), true);
// sending the images
job=new ebadgeJob();
job.jobType=SEND_IMAGE;
job.imageData = id;
jobs.add(job);
}
}
Log.d("TEST", "jobs are " +jobs.toString());
Calendar date = Calendar.getInstance();
long t= date.getTimeInMillis();
Date afterAddingTenMins=new Date(t + (5 * ONE_MINUTE_IN_MILLIS));
Log.d("TEST", "Date after adding 5 min is " +afterAddingTenMins);
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
Date d = new Date();
try {
d = sdf.parse("20191010111213");
} catch (ParseException ex) {
Log.v("Exception", ex.getLocalizedMessage());
}
//set the page
job=new ebadgeJob();
job.jobType=SET_PAGE;
if(toDo.equals("checkin")){
job.pageId=1;
job.expireTime=afterAddingTenMins;
}else if(toDo.equals("checkout")){
job.pageId=0;
job.expireTime= d;
}
//job.expireTime=d;
job.timeout=0;
job.imageConfig= setpageInfo(list,longTermAssets);
jobs.add(job);
//refresh the page
job = new ebadgeJob();
job.jobType=REFRESH_PAGE;
if(toDo.equals("checkin")){
job.pageId=1;
}else if(toDo.equals("checkout")){
job.pageId=0;
}
jobs.add(job);
}
int[] toArray(List<Integer> list) {
int[] ret = new int[list.size()];
int i = 0;
for (Iterator<Integer> it = list.iterator();
it.hasNext();
ret[i++] = it.next())
;
return ret;
}
private ImageData sendImgHere(byte[] imgBuffer, int imageId, int width, int height, boolean dithering) {
Log.d("TEST" , " I am sending this image " + imageId);
ImageData imageData = new ImageData();
imageData.id = imageId;
imageData.width = width;
imageData.height = height;
imageData.data = imgBuffer;
if (dithering)
imageData.applyDither();
return imageData;
}
private byte[] bitmapTo8BitImage(Bitmap bitmap) {
int[] pixels = new int[bitmap.getWidth() * bitmap.getHeight()];
bitmap.getPixels(pixels, 0, bitmap.getWidth(), 0, 0,
bitmap.getWidth(), bitmap.getHeight());
ByteBuffer eightByteBuffer = ByteBuffer.allocate(pixels.length);
for (int i = 0; i < pixels.length; i++) {
int p = pixels[i];
int red = Color.red(p);
int green = Color.green(p);
int blue = Color.blue(p);
byte p1Rgb = (byte) ((int) Math.round((red + green + blue) / 3));
eightByteBuffer.put(p1Rgb);
}
return eightByteBuffer.array();
}
private List<ImageConfig> setpageInfo(ArrayList<BitmapInfo> list, ArrayList<LongTermAssets> longTermAssets) {
List<ImageConfig> configList = new ArrayList<>();
if(longTermAssets.size()>0){
for(int i=0;i<longTermAssets.size();i++){
Log.d("TEST", "IMAGE THAT DID NOT CHANGE " +longTermAssets.get(i).getImageId()+""+"X:"+longTermAssets.get(i).getX()+"Y:"+longTermAssets.get(i).getY());
ImageConfig imageConfig = new ImageConfig();
imageConfig.imageId = longTermAssets.get(i).getImageId();
imageConfig.x=longTermAssets.get(i).getX();
imageConfig.y=longTermAssets.get(i).getY();
imageConfig.invert=false;
configList.add(imageConfig);
}
}
if(list.size()>0){
for(int i=0;i<list.size();i++){
Log.d("TEST", "IMAGE ID that changed " +list.get(i).getImageid()+" "+" X: "+list.get(i).getX()+" Y: "+list.get(i).getY());
ImageConfig imageConfig = new ImageConfig();
imageConfig.imageId = list.get(i).getImageid();
imageConfig.x=list.get(i).getX();
imageConfig.y=list.get(i).getY();
imageConfig.invert=list.get(i).isInverted();
configList.add(imageConfig);
}
}
return configList;
}
public ArrayList<ebadgeJob> getJobsToExecute(){
return jobs;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment