diff --git a/app/build.gradle b/app/build.gradle index 76d6a244..b47825d8 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,12 +27,12 @@ android { aaptOptions { noCompress "tflite" } - sourceSets { - main { - jniLibs.srcDirs = ['libs'] - assets.srcDir("main/assets") - } - } +// sourceSets { +// main { +// jniLibs.srcDirs = ['libs'] +// assets.srcDir("main/assets") +// } +// } } dependencies { @@ -40,9 +40,11 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' + implementation 'com.android.support:design:28.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' -// implementation project(path: ':nsfw') - implementation 'com.github.devzwy:open_nsfw_android:1.2.2' + implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30' + implementation project(path: ':nsfw') +// implementation 'com.github.devzwy:open_nsfw_android:1.2.3' } diff --git a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt index 33b9283b..c2fbe8e5 100644 --- a/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt +++ b/app/src/main/java/com/example/open_nsfw_android/MainActivity.kt @@ -4,15 +4,16 @@ import android.annotation.SuppressLint import android.graphics.BitmapFactory import android.os.Bundle import android.support.v7.app.AppCompatActivity -import android.util.Log +import android.support.v7.widget.LinearLayoutManager import com.zwy.nsfw.api.NsfwHelper import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { var nsfwHelper: NsfwHelper? = null - - + var mainAdapter: MainAdapter? = null + var index = 0 + val listData: ArrayList = ArrayList() @SuppressLint("SetTextI18n") override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -21,51 +22,24 @@ class MainActivity : AppCompatActivity() { // val b = BitmapFactory.decodeStream(resources.assets.open("img/06 (1).jpg")) // iv.setImageBitmap(b) nsfwHelper = NsfwHelper.getInstance(this, true, 1) - - bt_.setOnClickListener { - //同步识别 + mainAdapter = MainAdapter(null) + rv.layoutManager = LinearLayoutManager(this) + rv.adapter = mainAdapter + tv_start.setOnClickListener { for (a in resources.assets.list("img")) { - val b = BitmapFactory.decodeStream(resources.assets.open("img/${a}")) - val nsfwBean = nsfwHelper?.scanBitmapSyn(b) - Log.d("demo", nsfwBean.toString() + " - ${a}") - tvv.text = "识别成功:\n\tSFW score : ${nsfwBean?.sfw}\n\tNSFW score : ${nsfwBean?.nsfw},- ${a}" - if (nsfwBean?.nsfw ?: 0f > 0.7) { - tvv.text = "${tvv.text} \n \t - 色情图片" - } else { - tvv.text = "${tvv.text} \n \t - 正常图片" + val path = "img/${a}" + val b = BitmapFactory.decodeStream(resources.assets.open(path)) + listData.add(MyNsfwBean(0f, 0f, path, b)) + nsfwHelper?.scanBitmap(b) { sfw, nsfw -> + listData[index].sfw = sfw + listData[index].nsfw = nsfw + mainAdapter?.addData(listData[index]) + mainAdapter?.notifyItemInserted(index) + index++ } } -// val nsfwBean = nsfwHelper?.scanBitmapSyn(b) -// Log.d("demo", nsfwBean.toString()) -// tvv.text = "识别成功:\n\tSFW score : ${nsfwBean?.sfw}\n\tNSFW score : ${nsfwBean?.nsfw}" -// if (nsfwBean?.nsfw ?: 0f > 0.7) { -// tvv.text = "${tvv.text} \n \t - 色情图片" -// } else { -// tvv.text = "${tvv.text} \n \t - 正常图片" -// } -// //异步识别,接口回调识别结果 -// nsfwHelper?.scanBitmap(b) { sfw, nsfw -> -// Log.d("demo", "sfw:$sfw,nsfw:$nsfw") -// } - } - } -// override fun onResume() { -// super.onResume() -// if (!OpenCVLoader.initDebug()) { -// OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_0_0, this, mLoaderCallback); -// } else { -// mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); -// } -// } + } -// internal var mLoaderCallback: LoaderCallbackInterface = object : LoaderCallbackInterface { -// override fun onManagerConnected(status: Int) { -// -// } -// -// override fun onPackageInstall(operation: Int, callback: InstallCallbackInterface) { -// -// } -// } + } } diff --git a/app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt b/app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt new file mode 100644 index 00000000..3e40d90b --- /dev/null +++ b/app/src/main/java/com/example/open_nsfw_android/MainAdapter.kt @@ -0,0 +1,36 @@ +package com.example.open_nsfw_android + +import android.annotation.SuppressLint +import android.support.v4.content.ContextCompat +import android.widget.ImageView +import android.widget.RelativeLayout +import android.widget.TextView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.chad.library.adapter.base.BaseViewHolder + +class MainAdapter(val nsfwList: List?) : + BaseQuickAdapter(R.layout.main_item, nsfwList) { + + @SuppressLint("SetTextI18n") + override fun convert(helper: BaseViewHolder, item: MyNsfwBean) { + val textView = helper.getView(R.id.tv_text) + val imageView = helper.getView(R.id.iv) + val view = helper.getView(R.id.view) + var nsfwStr = "色情图片" + var color = ContextCompat.getColor(mContext,R.color.nsfw1) + when (item.nsfw) { + in 0.0..0.3 -> { + nsfwStr = "正常图片" + color = ContextCompat.getColor(mContext,R.color.nsfw3) + } + in 0.3..0.7 -> { + nsfwStr = "👙比基尼" + color = ContextCompat.getColor(mContext,R.color.nsfw2) + } + } + textView.text = + "path = ${"img/${item.path}"} \n\nSFW score: ${item.sfw}\nNSFW score: ${item.nsfw} \n\n 鉴定结果: ${nsfwStr}" + imageView.setImageBitmap(item.bitmap) + view.setBackgroundColor(color) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt b/app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt new file mode 100644 index 00000000..8fe1cd7d --- /dev/null +++ b/app/src/main/java/com/example/open_nsfw_android/MyNsfwBean.kt @@ -0,0 +1,8 @@ +package com.example.open_nsfw_android + +import android.graphics.Bitmap +import com.zwy.nsfw.api.NsfwBean + +data class MyNsfwBean(var sfw: Float,var nsfw: Float, val path: String,val bitmap:Bitmap) { + +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 87dbdb1b..67a45de1 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,27 +1,49 @@ - - -