static void get_device_id(void) { uint8_t digest[16]; uint8_t buf[64]; int fd = open("/sys/class/net/eth0/address", O_RDONLY); if(fd == -1) return; int r = read(fd, buf, sizeof(buf)); close(fd); if(r < 1) return; md5_decl(ctx); md5_init(ctx); md5_update(ctx, buf, r); md5_final(ctx, digest); bin2hex(gconf.device_id, sizeof(gconf.device_id), digest, sizeof(digest)); }
JNIEXPORT void JNICALL Java_com_lonelycoder_mediaplayer_Core_coreInit(JNIEnv *env, jobject obj, jstring j_settings, jstring j_cachedir, jstring j_sdcard, jstring j_android_id, jint time_24hrs) { char path[PATH_MAX]; trace_arch(TRACE_INFO, "Core", "Native core initializing"); gconf.trace_level = TRACE_DEBUG; gconf.time_format_system = time_24hrs ? TIME_FORMAT_24 : TIME_FORMAT_12; struct timeval tv; gettimeofday(&tv, NULL); srand(tv.tv_usec); const char *settings = (*env)->GetStringUTFChars(env, j_settings, 0); const char *cachedir = (*env)->GetStringUTFChars(env, j_cachedir, 0); const char *sdcard = (*env)->GetStringUTFChars(env, j_sdcard, 0); const char *android_id = (*env)->GetStringUTFChars(env, j_android_id, 0); gconf.persistent_path = strdup(settings); gconf.cache_path = strdup(cachedir); snprintf(path, sizeof(path), "%s/Download", sdcard); mkdir(path, 0770); snprintf(path, sizeof(path), "%s/Download/movian_upgrade.apk", sdcard); gconf.upgrade_path = strdup(path); unlink(gconf.upgrade_path); uint8_t digest[16]; md5_decl(ctx); md5_init(ctx); md5_update(ctx, (const void *)android_id, strlen(android_id)); md5_update(ctx, (const void *)android_serialno, strlen(android_serialno)); md5_final(ctx, digest); bin2hex(gconf.device_id, sizeof(gconf.device_id), digest, sizeof(digest)); (*env)->ReleaseStringUTFChars(env, j_settings, settings); (*env)->ReleaseStringUTFChars(env, j_cachedir, cachedir); (*env)->ReleaseStringUTFChars(env, j_sdcard, sdcard); (*env)->ReleaseStringUTFChars(env, j_android_id, android_id); gconf.concurrency = sysconf(_SC_NPROCESSORS_CONF); setlocale(LC_ALL, ""); signal(SIGPIPE, SIG_IGN); main_init(); jclass c = (*env)->FindClass(env, "com/lonelycoder/mediaplayer/Core"); STCore = (*env)->NewGlobalRef(env, c); prop_jni_init(env); service_create("music", "Music", "file:///sdcard/Music", "music", NULL, 0, 1, SVC_ORIGIN_SYSTEM); service_create("music", "Movies", "file:///sdcard/Movies", "video", NULL, 0, 1, SVC_ORIGIN_SYSTEM); android_nav = nav_spawn(); }