| 33 | import androidx.annotation.NonNull; |
| 34 | |
| 35 | class FedEdgeImpl implements EdgeMessageDefine, FedEdgeApi { |
| 36 | |
| 37 | /** |
| 38 | * manifest meta key "fedml_key" |
| 39 | */ |
| 40 | private static final String META_ACCOUNT_KEY = new ObfuscatedString(new long[]{0x78DA743E5BE2970DL, |
| 41 | 0x380F3AEE359ADEEEL, 0x77E0C41263DBC235L}).toString(); |
| 42 | /** |
| 43 | * SecretKey: ks-FedML-beehive |
| 44 | */ |
| 45 | private static final String SECRET_KEY = new ObfuscatedString(new long[]{0xBA683391111A600DL, 0x84924D54717A16E1L, |
| 46 | 0xBE985554215915ACL}).toString(); |
| 47 | |
| 48 | private final ServiceConnection mServiceConnection = new ServiceConnection() { |
| 49 | @Override |
| 50 | public void onServiceConnected(ComponentName name, IBinder service) { |
| 51 | mServiceMessenger = new Messenger(service); |
| 52 | Bundle bundle = new Bundle(); |
| 53 | bundle.putString("msg", "how are you?"); |
| 54 | sendMessage(MSG_FROM_CLIENT, bundle); |
| 55 | |
| 56 | initBindingState(ContextHolder.getAppContext()); |
| 57 | } |
| 58 | |
| 59 | @Override |
| 60 | public void onServiceDisconnected(ComponentName name) { |
| 61 | mServiceMessenger = null; |
| 62 | bindService(); |
| 63 | } |
| 64 | }; |
| 65 | private final Handler mClientHandler = new Handler(Looper.getMainLooper()) { |
| 66 | @Override |
| 67 | public void handleMessage(Message msg) { |
| 68 | LogHelper.d("FedEdge receive message from service:%s", msg.toString()); |
| 69 | if (MSG_TRAIN_STATUS == msg.what) { |
| 70 | LogHelper.d("FedEdge MSG_TRAIN_STATUS. msg.arg1:%d", msg.arg1); |
| 71 | if (onTrainingStatusListener != null) { |
| 72 | onTrainingStatusListener.onStatusChanged(msg.arg1); |
| 73 | } |
| 74 | } else if (MSG_TRAIN_PROGRESS == msg.what) { |
| 75 | if (onTrainProgressListener != null) { |
| 76 | onTrainProgressListener.onProgressChanged(msg.arg1, msg.arg2); |
| 77 | } |
| 78 | } else if (MSG_TRAIN_LOSS == msg.what) { |
| 79 | Bundle bundle = msg.getData(); |
| 80 | if (onTrainProgressListener != null && bundle != null) { |
| 81 | onTrainProgressListener.onEpochLoss(msg.arg1, msg.arg2, |
| 82 | bundle.getFloat(TRAIN_LOSS, 0)); |
| 83 | } |
| 84 | } else if (MSG_TRAIN_ACCURACY == msg.what) { |
| 85 | Bundle bundle = msg.getData(); |
| 86 | if (onTrainProgressListener != null && bundle != null) { |
| 87 | onTrainProgressListener.onEpochAccuracy(msg.arg1, msg.arg2, |
| 88 | bundle.getFloat(TRAIN_ACCURACY, 0)); |
| 89 | } |
| 90 | } |
| 91 | } |
| 92 | }; |