Skip to content

Commit

Permalink
1st commit
Browse files Browse the repository at this point in the history
  • Loading branch information
shogo4405 committed Nov 19, 2016
0 parents commit 0981101
Show file tree
Hide file tree
Showing 41 changed files with 1,080 additions and 0 deletions.
19 changes: 19 additions & 0 deletions HaishinKit.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id="HaishinKit" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="java-gradle" name="Java-Gradle">
<configuration>
<option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" />
<option name="BUILDABLE" value="false" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true">
<exclude-output />
<content url="file:https://$MODULE_DIR$">
<excludeFolder url="file:https://$MODULE_DIR$/.gradle" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
1 change: 1 addition & 0 deletions app/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
114 changes: 114 additions & 0 deletions app/app.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
<?xml version="1.0" encoding="UTF-8"?>
<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" external.system.module.group="HaishinKit" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android-gradle" name="Android-Gradle">
<configuration>
<option name="GRADLE_PROJECT_PATH" value=":app" />
</configuration>
</facet>
<facet type="android" name="Android">
<configuration>
<option name="SELECTED_BUILD_VARIANT" value="debug" />
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
<afterSyncTasks>
<task>generateDebugSources</task>
</afterSyncTasks>
<option name="ALLOW_USER_CONFIGURATION" value="false" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" />
<option name="RES_FOLDERS_RELATIVE_PATH" value="file:https://$MODULE_DIR$/src/main/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
<output url="file:https://$MODULE_DIR$/build/intermediates/classes/debug" />
<output-test url="file:https://$MODULE_DIR$/build/intermediates/classes/test/debug" />
<exclude-output />
<content url="file:https://$MODULE_DIR$">
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/res" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/resources" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/assets" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/aidl" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/java" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/jni" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/debug/rs" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/java" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/jni" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/res" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/assets" type="java-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/aidl" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/jni" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/main/rs" isTestSource="false" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/res" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/assets" type="java-test-resource" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/aidl" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/java" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/jni" isTestSource="true" />
<sourceFolder url="file:https://$MODULE_DIR$/src/test/rs" isTestSource="true" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/assets" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/blame" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/builds" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/bundles" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/classes" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/dependency-cache" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/animated-vector-drawable/23.4.0/jars" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.4.0/jars" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-v4/23.4.0/jars" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/exploded-aar/com.android.support/support-vector-drawable/23.4.0/jars" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/incremental" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/incremental-classes" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/incremental-verifier" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/instant-run-support" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/jniLibs" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/manifests" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/reload-dex" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/res" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/restart-dex" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/rs" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/symbols" />
<excludeFolder url="file:https://$MODULE_DIR$/build/intermediates/transforms" />
<excludeFolder url="file:https://$MODULE_DIR$/build/outputs" />
<excludeFolder url="file:https://$MODULE_DIR$/build/tmp" />
</content>
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" exported="" name="support-annotations-23.4.0" level="project" />
<orderEntry type="library" exported="" name="animated-vector-drawable-23.4.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="hamcrest-core-1.3" level="project" />
<orderEntry type="library" exported="" name="support-v4-23.4.0" level="project" />
<orderEntry type="library" exported="" scope="TEST" name="junit-4.12" level="project" />
<orderEntry type="library" exported="" name="support-vector-drawable-23.4.0" level="project" />
<orderEntry type="library" exported="" name="appcompat-v7-23.4.0" level="project" />
</component>
</module>
26 changes: 26 additions & 0 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "24.0.1"

defaultConfig {
applicationId "com.haishinkit"
minSdkVersion 17
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
}
17 changes: 17 additions & 0 deletions app/proguard-rules.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Add project specific ProGuard rules here.
# By default, the flags in this file are appended to flags specified
# in /Developer/adt-bundle-mac-x86_64-20140321/sdk/tools/proguard/proguard-android.txt
# You can edit the include path and order by changing the proguardFiles
# directive in build.gradle.
#
# For more details, see
# http:https://developer.android.com/guide/developing/tools/proguard.html

# Add any project specific keep options here:

# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
13 changes: 13 additions & 0 deletions app/src/androidTest/java/com/haishinkit/ApplicationTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.haishinkit;

import android.app.Application;
import android.test.ApplicationTestCase;

/**
* <a href="http:https://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
21 changes: 21 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http:https://schemas.android.com/apk/res/android"
package="com.haishinkit">

<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>
19 changes: 19 additions & 0 deletions app/src/main/java/com/haishinkit/MainActivity.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.haishinkit;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.haishinkit.rtmp.RTMPConnection;

public class MainActivity extends AppCompatActivity {

private RTMPConnection connection = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

connection = new RTMPConnection();
connection.connect("192.168.179.3");
}
}
4 changes: 4 additions & 0 deletions app/src/main/java/com/haishinkit/amf/AMF0Desializer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.haishinkit.amf;

public class AMF0Desializer {
}
4 changes: 4 additions & 0 deletions app/src/main/java/com/haishinkit/amf/AMF0Serializer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
package com.haishinkit.amf;

public class AMF0Serializer {
}
110 changes: 110 additions & 0 deletions app/src/main/java/com/haishinkit/net/Socket.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
package com.haishinkit.net;

import android.util.Log;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.ByteBuffer;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;

public abstract class Socket {
protected ByteBuffer inputBuffer = null;
private java.net.Socket socket = null;
private Thread output = null;
private Thread network = null;
private InputStream inputStream = null;
private OutputStream outputStream = null;
private BlockingQueue<ByteBuffer> outputQueue = null;

public Socket() {
inputBuffer = ByteBuffer.allocate(0);
outputQueue = new ArrayBlockingQueue<ByteBuffer>(128);
}

public final void connect(final String dstName, final int dstPort) {
outputQueue.clear();
network = new Thread() {
public void run() {
doConnection(dstName, dstPort);
}
};
network.start();
}

public final void close() {
try {
socket.close();
} catch (IOException e) {
Log.e(getClass().getName(), e.toString());
}
}

public void doOutput(ByteBuffer buffer) {
try {
outputQueue.put(buffer);
} catch (InterruptedException e) {
Log.v(getClass().getName(), e.toString());
}
}

protected abstract void onConnect();
protected abstract void listen(ByteBuffer buffer);

private void doInput() {
try {
int available = inputStream.available();
if (available == 0) {
return;
}
ByteBuffer buffer = ByteBuffer.allocate(inputBuffer.capacity() + available);
buffer.put(inputBuffer);
inputStream.read(buffer.array(), inputBuffer.capacity(), available);
buffer.position(0);
listen(buffer);
inputBuffer = buffer.slice();
} catch (IOException e) {
Log.e(getClass().getName(), e.toString());
}
}

private void doOutput() {
while (socket != null && socket.isConnected()) {
for (ByteBuffer buffer : outputQueue) {
try {
outputStream.write(buffer.array());
outputStream.flush();
outputQueue.remove(buffer);
} catch (IOException e) {
Log.e(getClass().getName(), e.toString());
}
}
}
}

private void doConnection(final String dstName, final int dstPort) {
Log.v(getClass().getName(), dstName + ":" + dstPort);
try {
socket = new java.net.Socket(dstName, dstPort);
if (socket.isConnected()) {
inputStream = socket.getInputStream();
outputStream = socket.getOutputStream();
output = new Thread() {
@Override
public void run() {
doOutput();
}
};
output.start();
onConnect();
}
while (socket != null && socket.isConnected()) {
doInput();
}
} catch (Exception e) {
Log.v(getClass().getName(), e.toString());
}
}
}


Loading

0 comments on commit 0981101

Please sign in to comment.