Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Takeya-Yuki
RubyLib
提交
a44ff91d
R
RubyLib
项目概览
Takeya-Yuki
/
RubyLib
8 个月 前同步成功
通知
39
Star
19
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
RubyLib
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
a44ff91d
编写于
8月 04, 2017
作者:
T
Takeya Yuki
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add Restful API Client
上级
330d7dbe
变更
18
显示空白变更内容
内联
并排
Showing
18 changed file
with
210 addition
and
45 deletion
+210
-45
.idea/misc.xml
.idea/misc.xml
+18
-0
app/src/main/AndroidManifest.xml
app/src/main/AndroidManifest.xml
+2
-2
app/src/main/java/jp/ruby/rubylibrary/A.java
app/src/main/java/jp/ruby/rubylibrary/A.java
+10
-0
app/src/main/java/jp/ruby/rubylibrary/MainActivity.java
app/src/main/java/jp/ruby/rubylibrary/MainActivity.java
+24
-21
app/src/main/res/layout/activity_main.xml
app/src/main/res/layout/activity_main.xml
+5
-6
build.gradle
build.gradle
+8
-1
gradle.bat
gradle.bat
+1
-0
gradle.properties
gradle.properties
+10
-9
rubylib/build.gradle
rubylib/build.gradle
+17
-2
rubylib/src/main/AndroidManifest.xml
rubylib/src/main/AndroidManifest.xml
+2
-1
rubylib/src/main/java/yuki/control/extended/HttpAsyncClient.java
.../src/main/java/yuki/control/extended/HttpAsyncClient.java
+42
-0
rubylib/src/main/java/yuki/control/extended/OnREST.java
rubylib/src/main/java/yuki/control/extended/OnREST.java
+8
-0
rubylib/src/main/java/yuki/control/extended/OnRESTString.java
...lib/src/main/java/yuki/control/extended/OnRESTString.java
+9
-0
rubylib/src/main/java/yuki/control/extended/WebViewEx.java
rubylib/src/main/java/yuki/control/extended/WebViewEx.java
+3
-0
rubylib/src/main/java/yuki/control/extended/YukiJSBridge.java
...lib/src/main/java/yuki/control/extended/YukiJSBridge.java
+8
-2
rubylib/src/main/java/yuki/pm/extended/NetworkManager.java
rubylib/src/main/java/yuki/pm/extended/NetworkManager.java
+1
-1
rubylib/src/main/java/yuki/resource/extended/GsonConvert.java
...lib/src/main/java/yuki/resource/extended/GsonConvert.java
+22
-0
rubylib/src/main/java/yuki/resource/extended/UIController.java
...ib/src/main/java/yuki/resource/extended/UIController.java
+20
-0
未找到文件。
.idea/misc.xml
浏览文件 @
a44ff91d
...
...
@@ -3,6 +3,24 @@
<component
name=
"EntryPointsManager"
>
<entry_points
version=
"2.0"
/>
</component>
<component
name=
"JavadocGenerationManager"
>
<option
name=
"OUTPUT_DIRECTORY"
value=
"B:/"
/>
<option
name=
"OPTION_SCOPE"
value=
"protected"
/>
<option
name=
"OPTION_HIERARCHY"
value=
"true"
/>
<option
name=
"OPTION_NAVIGATOR"
value=
"true"
/>
<option
name=
"OPTION_INDEX"
value=
"true"
/>
<option
name=
"OPTION_SEPARATE_INDEX"
value=
"true"
/>
<option
name=
"OPTION_DOCUMENT_TAG_USE"
value=
"false"
/>
<option
name=
"OPTION_DOCUMENT_TAG_AUTHOR"
value=
"false"
/>
<option
name=
"OPTION_DOCUMENT_TAG_VERSION"
value=
"false"
/>
<option
name=
"OPTION_DOCUMENT_TAG_DEPRECATED"
value=
"true"
/>
<option
name=
"OPTION_DEPRECATED_LIST"
value=
"true"
/>
<option
name=
"OTHER_OPTIONS"
value=
"encoding=UTF-8"
/>
<option
name=
"HEAP_SIZE"
/>
<option
name=
"LOCALE"
/>
<option
name=
"OPEN_IN_BROWSER"
value=
"true"
/>
<option
name=
"OPTION_INCLUDE_LIBS"
value=
"false"
/>
</component>
<component
name=
"NullableNotNullManager"
>
<option
name=
"myDefaultNullable"
value=
"android.support.annotation.Nullable"
/>
<option
name=
"myDefaultNotNull"
value=
"android.support.annotation.NonNull"
/>
...
...
app/src/main/AndroidManifest.xml
浏览文件 @
a44ff91d
...
...
@@ -9,7 +9,7 @@
android:roundIcon=
"@mipmap/ic_launcher_round"
android:supportsRtl=
"true"
android:theme=
"@style/AppTheme"
>
<activity
android:name=
".MainActivity"
>
<activity
android:name=
".MainActivity"
android:windowSoftInputMode=
"adjustResize"
>
<intent-filter>
<action
android:name=
"android.intent.action.VIEW"
/>
<category
android:name=
"android.intent.category.DEFAULT"
/>
...
...
@@ -23,5 +23,5 @@
<uses-permission
android:name=
"android.permission.READ_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<uses-permission
android:name=
"android.permission.READ_MEDIA_STORAGE"
/>
<uses-permission
android:name=
"android.permission.
WRITE_MEDIA_STORAGE
"
/>
<uses-permission
android:name=
"android.permission.
INTERNET
"
/>
</manifest>
\ No newline at end of file
app/src/main/java/jp/ruby/rubylibrary/A.java
0 → 100644
浏览文件 @
a44ff91d
package
jp.ruby.rubylibrary
;
/**
* Created by Akeno on 2017/06/30.
*/
public
class
A
{
public
int
a
;
public
String
b
;
}
app/src/main/java/jp/ruby/rubylibrary/MainActivity.java
浏览文件 @
a44ff91d
package
jp.ruby.rubylibrary
;
import
android.app.Activity
;
import
android.content.Context
;
import
android.content.Intent
;
import
android.graphics.Color
;
import
android.net.Uri
;
import
android.os.Bundle
;
import
android.support.annotation.Nullable
;
import
android.util.AttributeSet
;
import
android.util.Log
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.webkit.WebView
;
import
android.widget.LinearLayout
;
import
android.widget.TextView
;
import
java.nio.charset.Charset
;
import
yuki.control.extended.WebViewEx
;
import
yuki.resource.extended.GsonConvert
;
import
yuki.resource.extended.StorageIOManager
;
import
yuki.resource.extended.UIController
;
...
...
@@ -16,26 +28,17 @@ public class MainActivity extends Activity {
protected
void
onCreate
(
Bundle
savedInstanceState
)
{
super
.
onCreate
(
savedInstanceState
);
setContentView
(
R
.
layout
.
activity_main
);
TextView
tv
=(
TextView
)
findViewById
(
R
.
id
.
tv
);
String
s
=
null
;
UIController
.
SetStatusBarBackgroundColor
(
this
,
Color
.
BLACK
);
UIController
.
SetNavigationBarBackgroundColor
(
this
,
Color
.
RED
);
//UIController.HideStatusBar(this);
UIController
.
HideNavigationBar
(
this
);
//UIController.ShowStatusBar(this);
UIController
.
ShowNavigationBar
(
this
);
try
{
s
=
String
.
format
(
"Screen Size\nReal Size: %d px * %d px\n"
,
UIController
.
GetRealDisplayWidth
(
this
),
UIController
.
GetRealDisplayHeight
(
this
));
s
+=
String
.
format
(
"Real Size: %d dp * %d dp\n"
,
UIController
.
PixelToDP
(
UIController
.
GetRealDisplayWidth
(
this
),
UIController
.
GetRealDisplayMetrics
(
this
).
density
),
UIController
.
PixelToDP
(
UIController
.
GetRealDisplayHeight
(
this
),
UIController
.
GetRealDisplayMetrics
(
this
).
density
));
s
+=
String
.
format
(
"Logical Size: %d px * %d px\n"
,
UIController
.
GetLogicalDisplayWidth
(
this
),
UIController
.
GetLogicalDisplayHeight
(
this
));
s
+=
String
.
format
(
"Logical Size: %d dp * %d dp\n"
,
UIController
.
PixelToDP
(
UIController
.
GetLogicalDisplayWidth
(
this
),
UIController
.
GetLogicalDisplayMetrics
(
this
).
density
),
UIController
.
PixelToDP
(
UIController
.
GetLogicalDisplayHeight
(
this
),
UIController
.
GetLogicalDisplayMetrics
(
this
).
density
));
tv
.
setText
(
s
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
tv
.
setText
(
e
.
getLocalizedMessage
());
}
A
a
=
new
A
();
a
.
a
=
1
;
a
.
b
=
"hello world!"
;
TextView
tv
=
findViewById
(
R
.
id
.
tv
);
String
gson
=
GsonConvert
.
SerializeObject
(
a
);
tv
.
setText
(
gson
);
A
b
=
GsonConvert
.
DeserializeObject
(
gson
,
A
.
class
);
b
=
null
;
Intent
aa
=
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
"weixin://baidu.com/"
));
startActivity
(
aa
);
}
}
app/src/main/res/layout/activity_main.xml
浏览文件 @
a44ff91d
<?xml version="1.0" encoding="utf-8"?>
<
android.support.constraint.Constraint
Layout
xmlns:android=
"http://schemas.android.com/apk/res/android"
<
Linear
Layout
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=
"jp.ruby.rubylibrary.MainActivity"
>
<TextView
android:id=
"@+id/tv"
android:layout_width=
"
wrap_cont
ent"
android:layout_width=
"
match_par
ent"
android:layout_height=
"wrap_content"
android:text=
"TextView"
tools:layout_editor_absoluteX=
"3dp"
tools:layout_editor_absoluteY=
"2dp"
/>
</android.support.constraint.ConstraintLayout>
android:text=
"TextView"
/>
</LinearLayout>
build.gradle
浏览文件 @
a44ff91d
...
...
@@ -6,7 +6,7 @@ buildscript {
}
dependencies
{
classpath
'com.android.tools.build:gradle:2.3.0'
classpath
'com.novoda:bintray-release:0.3.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
...
...
@@ -18,6 +18,13 @@ allprojects {
}
}
subprojects
{
tasks
.
withType
(
Javadoc
).
all
{
enabled
=
false
}
}
task
clean
(
type:
Delete
)
{
delete
rootProject
.
buildDir
}
gradle.bat
0 → 100644
浏览文件 @
a44ff91d
gradlew
clean
build
bintrayUpload
-PbintrayUser
=
takeya
-yuki -PbintrayKey
=
%
1
-PdryRun
=
%
2
%
3
\ No newline at end of file
gradle.properties
浏览文件 @
a44ff91d
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
## Project-wide Gradle settings.
#
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
#
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs
=
-Xmx1536m
# Default value: -Xmx1024m -XX:MaxPermSize=256m
# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
#
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
#Thu Jun 29 16:11:36 CST 2017
#systemProp.http.proxyHost=127.0.0.1
org.gradle.jvmargs
=
-Xmx1536m
#systemProp.http.proxyPort=1080
rubylib/build.gradle
浏览文件 @
a44ff91d
apply
plugin:
'com.android.library'
apply
plugin:
'com.novoda.bintray-release'
publish
{
userOrg
=
'takeya-yuki-studio'
//bintray注册的用户名
groupId
=
'jp.ruby.rubylib'
//compile引用时的第1部分groupId
artifactId
=
'rubylib'
//compile引用时的第2部分项目名
publishVersion
=
'1.0.3'
//compile引用时的第3部分版本号
desc
=
'Ruby Extended Controls'
website
=
'https://github.com/Takeya-Yuki/RubyLib.git'
}
android
{
compileSdkVersion
26
...
...
@@ -7,8 +20,8 @@ android {
defaultConfig
{
minSdkVersion
17
targetSdkVersion
26
versionCode
1
versionName
"1.0"
versionCode
3
versionName
"1.0
.3
"
testInstrumentationRunner
"android.support.test.runner.AndroidJUnitRunner"
...
...
@@ -23,6 +36,7 @@ android {
versionNameSuffix
'1.0'
}
}
}
dependencies
{
...
...
@@ -31,5 +45,6 @@ dependencies {
exclude
group:
'com.android.support'
,
module:
'support-annotations'
})
compile
'com.android.support:appcompat-v7:26.+'
compile
'com.google.code.gson:gson:2.8.1'
testCompile
'junit:junit:4.12'
}
rubylib/src/main/AndroidManifest.xml
浏览文件 @
a44ff91d
...
...
@@ -6,5 +6,6 @@
android:supportsRtl=
"true"
>
</application>
<uses-permission
android:name=
"android.permission.CHANGE_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
</manifest>
rubylib/src/main/java/yuki/control/extended/HttpAsyncClient.java
浏览文件 @
a44ff91d
...
...
@@ -237,4 +237,46 @@ public final class HttpAsyncClient {
}
}).
start
();
}
public
static
void
AsyncRESTString
(
final
String
Url
,
final
Activity
activity
,
final
String
RESTMethod
,
final
String
ContentType
,
final
String
rawData
,
final
OnREST
post
){
new
Thread
(
new
Runnable
()
{
@Override
public
void
run
()
{
HttpURLConnection
urlConnection
=
null
;
try
{
URL
url
=
new
URL
(
Url
);
urlConnection
=
(
HttpURLConnection
)
url
.
openConnection
();
urlConnection
.
setDoOutput
(
true
);
urlConnection
.
setDoInput
(
true
);
urlConnection
.
setRequestMethod
(
RESTMethod
);
urlConnection
.
setRequestProperty
(
"Content-Type"
,
ContentType
);
urlConnection
.
setRequestProperty
(
"Connection"
,
"Keep-Alive"
);
urlConnection
.
setRequestProperty
(
"Charset"
,
"UTF-8"
);
urlConnection
.
setUseCaches
(
false
);
OutputStream
out
=
urlConnection
.
getOutputStream
();
out
.
write
(
rawData
.
getBytes
(
"UTF-8"
));
out
.
flush
();
out
.
close
();
InputStream
in
=
new
BufferedInputStream
(
urlConnection
.
getInputStream
());
final
String
result
=
readInStream
(
in
);
if
(
post
!=
null
&&
activity
!=
null
&&
post
instanceof
OnRESTString
)
{
activity
.
runOnUiThread
(
new
Runnable
()
{
@Override
public
void
run
()
{
((
OnRESTString
)
post
).
REST
(
result
);
}
}
);
}
}
catch
(
MalformedURLException
e
)
{
e
.
printStackTrace
();
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
finally
{
urlConnection
.
disconnect
();
}
}
}).
start
();
}
}
rubylib/src/main/java/yuki/control/extended/OnREST.java
0 → 100644
浏览文件 @
a44ff91d
package
yuki.control.extended
;
/**
* Created by Akeno on 2017/08/04.
*/
public
interface
OnREST
{
}
rubylib/src/main/java/yuki/control/extended/OnRESTString.java
0 → 100644
浏览文件 @
a44ff91d
package
yuki.control.extended
;
/**
* Created by Akeno on 2017/08/04.
*/
public
interface
OnRESTString
extends
OnREST
{
public
void
REST
(
String
data
);
}
rubylib/src/main/java/yuki/control/extended/WebViewEx.java
浏览文件 @
a44ff91d
...
...
@@ -350,6 +350,9 @@ public class WebViewEx extends WebView {
@SuppressLint
({
"SetJavaScriptEnabled"
})
protected
void
init
(
Context
context
)
{
if
(
isInEditMode
()){
return
;
}
if
(
context
instanceof
Activity
)
{
mActivity
=
new
WeakReference
<
Activity
>((
Activity
)
context
);
}
...
...
rubylib/src/main/java/yuki/control/extended/YukiJSBridge.java
浏览文件 @
a44ff91d
...
...
@@ -98,7 +98,13 @@ public class YukiJSBridge {
criteria
.
setCostAllowed
(
true
);
criteria
.
setPowerRequirement
(
Criteria
.
POWER_HIGH
);
try
{
Location
location
=
locationManager
.
getLastKnownLocation
(
provider
);
return
location
;
}
catch
(
SecurityException
ex
){
//DO NOTHING
return
null
;
}
}
}
rubylib/src/main/java/yuki/pm/extended/NetworkManager.java
浏览文件 @
a44ff91d
...
...
@@ -73,7 +73,7 @@ public class NetworkManager {
public
static
int
GetNetworkType
(
Context
context
)
{
ConnectivityManager
mConnectivityManager
=
(
ConnectivityManager
)
context
.
getSystemService
(
Context
.
CONNECTIVITY_SERVICE
);
NetworkInfo
mNetworkInfo
=
mConnectivityManager
.
getActiveNetworkInfo
();
if
(
mNetworkInfo
!=
null
||
mNetworkInfo
.
isAvailable
())
{
if
(
mNetworkInfo
!=
null
&&
mNetworkInfo
.
isAvailable
())
{
if
(
mNetworkInfo
.
getType
()
==
ConnectivityManager
.
TYPE_WIFI
||
mNetworkInfo
.
getType
()
==
ConnectivityManager
.
TYPE_WIMAX
)
{
return
WIFI
;
}
else
{
...
...
rubylib/src/main/java/yuki/resource/extended/GsonConvert.java
0 → 100644
浏览文件 @
a44ff91d
package
yuki.resource.extended
;
import
com.google.gson.Gson
;
import
java.lang.reflect.Type
;
/**
* Created by Akeno on 2017/06/30.
*/
public
class
GsonConvert
{
public
static
String
SerializeObject
(
Object
object
){
Gson
gson
=
new
Gson
();
return
gson
.
toJson
(
object
);
}
public
static
<
T
>
T
DeserializeObject
(
String
gson
,
Class
<
T
>
TClass
){
Gson
g
=
new
Gson
();
return
(
T
)
g
.
fromJson
(
gson
,
TClass
);
}
}
rubylib/src/main/java/yuki/resource/extended/UIController.java
浏览文件 @
a44ff91d
...
...
@@ -125,4 +125,24 @@ public class UIController {
uiv
&=~
View
.
SYSTEM_UI_FLAG_HIDE_NAVIGATION
;
mDecorView
.
setSystemUiVisibility
(
uiv
);
}
public
static
int
GetStatusBarHeight
(
Activity
activity
){
int
resourceId
=
activity
.
getResources
().
getIdentifier
(
"status_bar_height"
,
"dimen"
,
"android"
);
if
(
resourceId
>
0
){
return
activity
.
getResources
().
getDimensionPixelSize
(
resourceId
);
}
else
{
return
0
;
}
}
public
static
int
GetNavigationBarHeight
(
Activity
activity
){
int
resourceId
=
activity
.
getResources
().
getIdentifier
(
"navigation_bar_height"
,
"dimen"
,
"android"
);
if
(
resourceId
>
0
){
return
activity
.
getResources
().
getDimensionPixelSize
(
resourceId
);
}
else
{
return
0
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录