应狼友要求,加入网络图片测试通道。

pull/34/head
赵文文 5 years ago
parent e6d8dd6bd3
commit 8fb0fe4d4e
  1. 2
      .idea/gradle.xml
  2. 11
      app/build.gradle
  3. 25
      app/src/main/AndroidManifest.xml
  4. 43
      app/src/main/java/com/example/open_nsfw_android/Main2Activity.kt
  5. 8
      app/src/main/java/com/example/open_nsfw_android/MainActivity.kt
  6. 18
      app/src/main/res/layout/activity_main.xml
  7. 51
      app/src/main/res/layout/activity_main2.xml
  8. BIN
      app/src/main/res/mipmap-xhdpi/a.png
  9. 3
      app/src/main/res/values/dimens.xml
  10. 1
      app/src/main/res/values/strings.xml
  11. 9
      app/src/main/res/values/styles.xml

@ -1,8 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="LOCAL" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleHome" value="/Developer/gradle-5.1.1" />

@ -15,7 +15,7 @@ android {
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
debug{
debug {
minifyEnabled false //
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
@ -29,6 +29,13 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
// To inline the bytecode built with JVM target 1.8 into
// bytecode that is being built with JVM target 1.6. (e.g. navArgs)
kotlinOptions {
jvmTarget = "1.8"
}
}
dependencies {
@ -37,6 +44,8 @@ dependencies {
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'
implementation 'android.arch.navigation:navigation-fragment-ktx:1.0.0'
implementation 'android.arch.navigation:navigation-ui-ktx:1.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'

@ -1,16 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.open_nsfw_android">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
android:icon="@mipmap/icon"
android:label="@string/app_name"
android:roundIcon="@mipmap/icon"
android:supportsRtl="true"
android:theme="@style/AppTheme">
package="com.example.open_nsfw_android">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:allowBackup="true"
android:icon="@mipmap/a"
android:label="@string/app_name"
android:roundIcon="@mipmap/a"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".Main2Activity"
android:label="@string/title_activity_main2"></activity>
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

@ -0,0 +1,43 @@
package com.example.open_nsfw_android
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.os.Bundle
import android.support.design.widget.Snackbar
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.widget.Toast
import com.bumptech.glide.Glide
import com.zwy.nsfw.kotlin.getNsfwScore
import kotlinx.android.synthetic.main.activity_main2.*
class Main2Activity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main2)
bt.setOnClickListener {
if (et.text.toString().isNotBlank()) {
Thread(Runnable {
try {
val file = Glide.with(this)
.load(et.text.toString())
.downloadOnly(120, 120).get()
val nsfwBean = file.getNsfwScore(assets)
runOnUiThread {
iv.setImageBitmap(BitmapFactory.decodeFile(file.path))
tv.text = "nsfw:${nsfwBean.nsfw} \n sfw:${nsfwBean.sfw} "
}
} catch (e: Exception) {
runOnUiThread {
Toast.makeText(this, "图片载入失败,请重试", 0).show()
}
}
}).start()
}
}
}
}

@ -11,7 +11,10 @@ import android.support.v4.app.ActivityCompat
import android.support.v4.content.ContextCompat
import android.support.v7.app.AppCompatActivity
import android.support.v7.widget.LinearLayoutManager
import android.util.Log
import android.view.View
import android.widget.Toast
import com.bumptech.glide.Glide
import com.luck.picture.lib.PictureSelector
import com.luck.picture.lib.config.PictureConfig
import com.luck.picture.lib.config.PictureMimeType
@ -49,6 +52,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
//进行授权
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE), 1);
}
}
override fun onClick(v: View) {
@ -71,6 +75,9 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
.previewEggs(true)// 预览图片时 是否增强左右滑动图片体验(图片滑动一半即可看到上一张是否选中) true or false
.forResult(0x01);//结果回调onActivityResult code
}
R.id.bt_sc_from_internet ->{
startActivity(Intent(this,Main2Activity::class.java))
}
}
}
@ -88,6 +95,7 @@ class MainActivity : AppCompatActivity(), View.OnClickListener {
private fun initClickListener() {
bt_sc_assets.setOnClickListener(this)
bt_sc_from_other.setOnClickListener(this)
bt_sc_from_internet.setOnClickListener(this)
}
private fun initAdapter() {

@ -13,23 +13,33 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:textSize="12sp"
android:id="@+id/bt_sc_assets"
android:gravity="center"
android:layout_gravity="center"
android:padding="20dp"
android:padding="15dp"
android:text="@string/str_bt1" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="16sp"
android:textSize="14sp"
android:id="@+id/bt_sc_from_other"
android:gravity="center"
android:layout_gravity="center"
android:padding="20dp"
android:padding="15dp"
android:text="从相册选取" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:textSize="14sp"
android:id="@+id/bt_sc_from_internet"
android:gravity="center"
android:layout_gravity="center"
android:padding="15dp"
android:text="识别网络图片" />
</LinearLayout>
<TextView

@ -0,0 +1,51 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".Main2Activity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/et"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="1"
android:background="@null"
android:hint="粘贴网络图片路径"
android:padding="15dp" />
<Button
android:id="@+id/bt"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="0.3"
android:text="识别" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#504d4d4d" />
<TextView
android:id="@+id/tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="#FA3C00"
android:padding="20dp"
android:text="这里显示检测结果" />
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="15dp"/>
</LinearLayout>

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

@ -0,0 +1,3 @@
<resources>
<dimen name="fab_margin">16dp</dimen>
</resources>

@ -1,4 +1,5 @@
<resources>
<string name="app_name">离线鉴黄</string>
<string name="str_bt1">识别Assets下图片</string>
<string name="title_activity_main2">网络图片识别,你懂的</string>
</resources>

@ -8,4 +8,13 @@
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>

Loading…
Cancel
Save