2017-12-07 12 views
1
Context mcontext; 
this.Context= mcontext; 
//private Context context; 
//this.context=context; 
//super(mcontext); 
Vibrator mVibrator = (Vibrator) mcontext.getSystemService(Context.VIBRATOR_SERVICE); 
mVibrator.vibrate(300) 

ビープ音を鳴らすための簡単なコードをオンラインでたくさん検索しました。しかし、私は電話を振動させるためのコードをいくつか追加してコンパイルすることができません。私が見つけたすべてのスレッドはgetsystemservice()を使用しています。 Link to some code to vibrate on stackoverflow簡単な方法で電話を鳴らす(ソースコードアンドロイド)

最初にgetsystemservice()ファンクションだけが機能せず、どこか読んだら、context objectで呼び出す必要があります。私はコンテキストオブジェクトを作った。次に、コンテキストを初期化する必要があると言います。私はthis.context = contextを試しましたが、別のエラーが出ます。私はコンパイルエラーのこれらのサイクルに入って、電話を単に振動させるだけの簡単な仕事になるはずです。私がここで間違っていることを教えてください。

この質問は、私が他のスレッドから経験したものとは異なります。他のスレッドがgetsystemservice()だけを使用する答えを出しているが、コンテキストが必要なので動作しない。

更新:ここにこのスレッドに出くわした

How to pass context from MainActivity to another class in Android?は、だから私はこの

public class MyNonActivityClass{ 

// variable to hold context 
private Context context; 

//save the context received via constructor in a local variable 

public MyNonActivityClass(Context context){ 
this.context=context; 
} 

} 

をした。しかし、私はエラーmcallbackがここに初期化されていない可能性があります取得します。

private final Callback mCallback; 

そして私はあなたがVibrator serviceを呼び出しているところから、この

MyNonActivityClass mClass = new MyNonActivityClass(this); 
+0

あなたが権限を追加する必要がありますマニフェストファイル と動作すると思われるベローコードを追加する // 150ミリ秒間振動する プライベートvoid shakeItBaby(if(Build.VERSION.SDK_INT> = 26){ ((Vibrator)getSystemService(VIBRATOR_SERVICE)).vibrate VibrationEffect.createOneShot(150、VibrationEffect.DEFAULT_AMPLITUDE)); } else { ((Vibrator)getSystemService(VIBRATOR_SERVICE))。vibrate(150); } } –

+0

androidmanifest.xmlで振動の許可を追加しました – threewire

+0

どこから呼び出していますか? –

答えて

1

を追加するには?

のようなその、その後の活動から、

Vibrator mVibrator = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE); 
    mVibrator.vibrate(300) 

またはその後Frgamentからその場合、

Vibrator mVibrator = (Vibrator) getActivity().getSystemService(Context.VIBRATOR_SERVICE); 
    mVibrator.vibrate(300) 

またはあなたのコードでこれを更新する場合は、

void vibrate(Context mcontext){ 
    Vibrator mVibrator = (Vibrator) 
    mcontext.getSystemService(Context.VIBRATOR_SERVICE); 
    mVibrator.vibrate(300) 
} 
+0

this.getsystem ...これは赤で強調表示されるので動作しません。 getActivityも動作しません。mainactivity.javaではなく、ユーザー定義クラスからのビープ音を鳴らそうとしています。私のアンドロイドプログラミング経験が限られているので、私の少しの知識を許してください。問題はgetsystemserviceが解決されていないことです。 – threewire

+0

次に、MainActivityというコンテキスト・フォームをユーザー定義クラスに渡す必要があります。私の更新された答えを見てください。 –

+0

私はそれをユーザー定義クラスのコンテキストに割り当てることはできません。または、mainactivity.javaから渡す必要がある場合は、これを使用して録音スレッドの録音アクティビティの終了を示すため、どのようにすればよいでしょうか。メインスレッドはこのスレッドで何が起きているのか分かりません。だから私はそれが定義されているクラスからコンテキスト自体を取ることはできませんか?それが唯一の方法ですか? view.getcontextやactivity.getapplicationactivityなどを使用することはできませんか? – threewire

関連する問題