Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以持续时间和模式振动_Java_Android_Android Studio_Unity3d_Plugins - Fatal编程技术网

Java 以持续时间和模式振动

Java 以持续时间和模式振动,java,android,android-studio,unity3d,plugins,Java,Android,Android Studio,Unity3d,Plugins,我正在开发一个简单的插件。现在我尝试添加一个振动属性。但是这个代码不起作用。我哪里做错了?我的代码如下。你能帮帮我吗 安卓: 导入android.os.可控震源 public class Brid { private Context context; private static Brid instance; public Brid() { this.instance = this; } public static Brid instance() { if(instanc

我正在开发一个简单的插件。现在我尝试添加一个振动属性。但是这个代码不起作用。我哪里做错了?我的代码如下。你能帮帮我吗

安卓:

导入android.os.可控震源

public class Brid {

private Context context;
private static Brid instance;


public Brid()
{
    this.instance = this;
}

public static Brid instance()
{
    if(instance == null) {
        instance = new Brid();
    }
    return instance;
}

public void setContext(Context context) {
    this.context = context;
}



public void Vibrate()
{
    Vibrator v = (Vibrator) this.context.getSystemService(Context.VIBRATOR_SERVICE);
    v.vibrate(100);
}
}

Unity3D:


提前感谢…

我的解决方案如下

团结:


另外,我在1分钟前找到了Manifest.xml文件示例。现在插件正在运行。

我看你有了一个解决方案。对于那些不想使用Java的人。您只能从C中执行此操作

1.转到\Editor\Data\PlaybackEngines\AndroidPlayer\Apk,将AndroidManifest.xml文件复制到您的资产\Plugins\Android

2.现在从Assets\Plugins\Android打开复制的清单文件并添加到其中。保存、构建和运行。如果这是一个许可问题,现在应该解决

AndroidManifest.xml应该是什么样子的Unity 5.4:

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    android:versionCode="1"
    android:versionName="1.0">

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

    <application
    android:theme="@style/UnityThemeSelector"
    android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:debuggable="true">
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>

你从日志中得到任何错误吗?检查你的清单,因为我只在Android上尝试过。但应用程序并没有关闭。我在jar文件中有AndroidManifest.xml文件。我需要在plugins文件夹中添加AndroidManifest.xml文件吗。我没有更多的信息。你们能解释一下怎么做吗?最好的方法是解压.apk文件并检查清单中是否存在这一行。如果没有,请尝试将其添加到assets/plugins/android中的清单中。
public void vibrate()
    {
#if UNITY_ANDROID

        Bridge.Vibrate(null, null);

#endif
    }
        using (AndroidJavaClass pluginClass = new AndroidJavaClass("com.xx.ultimatemobile.Brid"))
        {
            if (pluginClass != null)
            {
                Brid = pluginClass.CallStatic<AndroidJavaObject>("instance");
                Brid.Call("setContext", context);
                context.Call("runOnUiThread", new AndroidJavaRunnable(() =>
                {
                    Brid.Call("Vibrate");
                }));
            }
        }
<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    android:versionCode="1"
    android:versionName="1.0">

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

    <application
    android:theme="@style/UnityThemeSelector"
    android:icon="@drawable/app_icon"
        android:label="@string/app_name"
        android:debuggable="true">
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>
using UnityEngine;
using System.Collections;

public class Vibrate
{

    public AndroidJavaClass unityPlayer;
    public AndroidJavaObject currentActivity;
    public AndroidJavaObject sysService;


    public void Vibrate()
    {
        unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
        sysService = currentActivity.Call<AndroidJavaObject>("getSystemService", "vibrator");
    }

    //Functions from https://developer.android.com/reference/android/os/Vibrator.html
    public void vibrate()
    {
        sysService.Call("vibrate");
    }


    public void vibrate(long milliseconds)
    {
        sysService.Call("vibrate", milliseconds);
    }

    public void vibrate(long[] pattern, int repeat)
    {
        sysService.Call("vibrate", pattern, repeat);
    }


    public void cancel()
    {
        sysService.Call("cancel");
    }

    public bool hasVibrator()
    {
        return sysService.Call<bool>("hasVibrator");
    }
}
Vibrate vibrate = new Vibrate();

if (vibrate.hasVibrator())
{
    //Vibrate
    vibrate.vibrate();

    //Vibrate for 500 milliseconds
    vibrate.vibrate(500);

    // Start without a delay
    // Vibrate for 200 milliseconds
    // Sleep for 2000 milliseconds
    long[] pattern = { 0, 200, 2000 };
    vibrate.vibrate(pattern, 0);

    //Cancel Vibration
    vibrate.cancel();
}