popcorn/Java/UsayaUnityPlayerActivity.ja...

221 lines
8.1 KiB
Plaintext
Raw Normal View History

package jp.usaya.lib;
import android.content.Intent;
import android.os.Bundle;
// import com.google.firebase.messaging.MessageForwardingService;
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;
// import com.onevcat.uniwebview.AndroidPlugin;
import android.util.DisplayMetrics;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.*;
import android.net.Uri;
import android.util.Log;
import android.os.SystemClock;
import java.io.File;
import java.net.URLEncoder;
import java.util.*;
import android.content.Context;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.pm.ActivityInfo;
// public class UsayaUnityPlayerActivity extends com.unity3d.player.UnityPlayerActivity // NCMB使わない場合はこっち
public class UsayaUnityPlayerActivity extends com.nifcloud.mbaas.ncmbfcmplugin.UnityPlayerActivity
{
public UsayaUnityPlayerActivity()
{
}
protected void onNewIntent(Intent intent)
{
// Intent message = new Intent(this, MessageForwardingService.class);
// message.setAction(MessageForwardingService.ACTION_REMOTE_INTENT);
// message.putExtras(intent);
// startService(message);
}
public void onCreate(Bundle savedInstanceState)
{
if(mUnityPlayer != null)
{
mUnityPlayer.quit();
mUnityPlayer = null;
}
super.onCreate(savedInstanceState);
}
public float getHeightPixels()
{
DisplayMetrics dMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(dMetrics);
return dMetrics.heightPixels;
}
public float getWidthPixels()
{
DisplayMetrics dMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(dMetrics);
return dMetrics.widthPixels;
}
public float getPointHeight()
{
DisplayMetrics dMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(dMetrics);
return dMetrics.heightPixels / dMetrics.density;
}
public float getPointWidth()
{
DisplayMetrics dMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getRealMetrics(dMetrics);
return dMetrics.widthPixels / dMetrics.density ;
}
public void forceOrientationPortrait(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
public void forceOrientationLandscape(){
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
public long elapsedRealtime(){
return SystemClock.elapsedRealtime();
}
public void postTwitterOrFacebook(boolean isTwitter, String message, String url, String imagePath)
{
try
{
String name = isTwitter ? "com.twitter.android" : "com.facebook.katana";
String type = imagePath.equals("") ? "text/plain" : getIntentTypeForImage(imagePath);
Intent intent = createAppIntent(name, "android.intent.action.SEND", type);
if(intent != null)
{
intent.putExtra("android.intent.extra.TEXT", (new StringBuilder(String.valueOf(message))).append(BR).append(url).toString());
if(!imagePath.equals(""))
intent.putExtra("android.intent.extra.STREAM", Uri.fromFile(new File(imagePath)));
UnityPlayer.currentActivity.startActivity(intent);
UnityPlayer.UnitySendMessage(UNITY_SEND_GAMEOBJECT, UNITY_SEND_CALLBACK, "0");
} else
{
UnityPlayer.UnitySendMessage(UNITY_SEND_GAMEOBJECT, UNITY_SEND_CALLBACK, "1");
}
}
catch(Exception e)
{
Log.e(TAG, "postTwitterOrFacebook", e);
UnityPlayer.UnitySendMessage(UNITY_SEND_GAMEOBJECT, UNITY_SEND_CALLBACK, "2");
}
}
public void createChooser(String message, String imagePath)
{
try
{
String type = imagePath.equals("") ? "text/plain" : getIntentTypeForImage(imagePath);
Intent intent = createAppIntent(null, "android.intent.action.SEND", type);
if(intent != null)
{
intent.putExtra("android.intent.extra.TEXT", message);
if(!imagePath.equals(""))
intent.putExtra("android.intent.extra.STREAM", Uri.fromFile(new File(imagePath)));
UnityPlayer.currentActivity.startActivity(Intent.createChooser(intent, "Share"));
UnityPlayer.UnitySendMessage(UNITY_SEND_GAMEOBJECT, UNITY_SEND_CALLBACK, "0");
} else
{
UnityPlayer.UnitySendMessage(UNITY_SEND_GAMEOBJECT, UNITY_SEND_CALLBACK, "1");
}
}
catch(Exception e)
{
Log.e(TAG, "createChooser", e);
UnityPlayer.UnitySendMessage(UNITY_SEND_GAMEOBJECT, UNITY_SEND_CALLBACK, "2");
}
}
private String getIntentTypeForImage(String imagePath)
{
String extension = imagePath.substring(imagePath.lastIndexOf(".") + 1).toLowerCase(Locale.getDefault());
return extension != ".png" ? "image/jpg" : "image/png";
}
private Intent createAppIntent(String name, String action, String type)
throws Exception
{
Intent intent;
List ris;
Iterator iterator;
try
{
intent = new Intent(action);
intent.setType(type);
ris = UnityPlayer.currentActivity.getPackageManager().queryIntentActivities(intent, 0x10000);
if(name == "" || name == null)
return ris.isEmpty() ? null : intent;
}
catch(Exception e)
{
throw e;
}
iterator = ris.iterator();
while(iterator.hasNext())
{
ResolveInfo ri = (ResolveInfo)iterator.next();
if(ri.activityInfo.packageName.equals(name))
{
intent.setClassName(ri.activityInfo.packageName, ri.activityInfo.name);
return intent;
}
}
return null;
}
public void sendNotification(long unixtime, int primary_key, String ticker, String content_title, String content_text, String sound_path)
{
// インテント作成
Activity activity = UnityPlayer.currentActivity;
Context context = activity.getApplicationContext();
Intent intent = new Intent(context, NotificationReceiver.class);
//渡す値
intent.putExtra("PRIMARY_KEY", primary_key);
intent.putExtra("TICKER", ticker);
intent.putExtra("CONTENT_TITLE", content_title);
intent.putExtra("CONTENT_TEXT", content_text);
intent.putExtra("SOUND_PATH", sound_path);
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(unixtime);
PendingIntent sender = PendingIntent.getBroadcast(context, primary_key, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis() , sender);
}
public void clearNotification(int primary_key)
{
// インテント作成
Activity activity = UnityPlayer.currentActivity;
Context context = activity.getApplicationContext();
Intent intent = new Intent(context,NotificationReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, primary_key, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarm = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
alarm.cancel(sender);
sender.cancel();
}
public static final String TAG = "UsayaUnityPlayerActivity";
public static final String BR = System.getProperty("line.separator");
public static final String UNITY_SEND_GAMEOBJECT = "ShareManager";
public static final String UNITY_SEND_CALLBACK = "OnShareManagerResult";
public static final String RESULT_SUCCESS = "0";
public static final String RESULT_NOT_AVAILABLE = "1";
public static final String RESULT_ERROR = "2";
}