WakeLock is a path-dependent type as it is not static.

On Wed Dec 03 2014 at 8:45:59 AM Perry Nguyen <pfngu...@gmail.com> wrote:

> iirc
>
> val lock: PowerManager#WakeLock
>
> On Wed Dec 03 2014 at 8:38:54 AM Daniel Skinner <dan...@dasa.cc> wrote:
>
>> just try it? In intellij, if I type `var wakeLock: WakeLock = null` and
>> it prompts to import `android.os.PowerManager.WakeLock` then the import
>> statement says "Cannot resolve symbol WakeLock`. If I clean and compile
>> from sbt console, I get "value WakeLock is not a member of object
>> android.os.PowerManager".
>>
>> Also, WakefulBroadcastReceiver is an abstract class, so no, I can't
>> simply call the static methods on it.
>>
>> On Wed, Dec 3, 2014 at 10:24 AM, Samuel Tardieu <s...@rfc1149.net> wrote:
>>
>>>
>>>
>>> 2014-12-03 17:09 GMT+01:00 Daniel Skinner <dan...@dasa.cc>:
>>>
>>>> I'm still learning a few things about scala but I'm wondering if anyone
>>>> has insight on accessing java statics from scala in relation to the Android
>>>> API. This rarely comes up but here's two examples.
>>>>
>>>> From https://developer.android.com/training/scheduling/wakelock.html
>>>>
>>>> The support library has a WakefulBroadcastReceiver that contains two
>>>> static methods. If i create a scala class that extends this, I can't access
>>>> the static methods for starting a wakeful service and finishing it.
>>>>
>>>
>>> What do you mean you “can’t access” them? You can imagine Java static
>>> methods as being roughly methods in a class companion object. You don’t
>>> inherit them, the way you wouldn’t inherit methods from a companion object
>>> as they don’t belong to the corresponding class, and they don’t operate on
>>> a particular instance. You need to access those methods by calling
>>> WakefulBroadcastReceiver.startWakefulService(…). In Java, being able to
>>> call them as if they were methods of your class is merely a convenience,
>>> they can’t access any of your non-static methods or fields anyway.
>>> ​
>>>
>>> .
>>>
>>>>
>>>> Likewise, http://developer.android.com/reference/android/
>>>> os/PowerManager.WakeLock.html I can't declare a WakeLock type with
>>>> something like `val wakeLock: WakeLock = null`.
>>>>
>>>
>>> Again, what do you mean by “I can’t declare a WakeLock”? What happens if
>>> you do? I don’t see any reason you couldn’t declare one and assign it the
>>> null value (although an Option[WakeLock] would probably be best here).
>>> ​
>>>
>>>
>>>
>>>>
>>>> I have an intent service and worked around this with the following that
>>>> I access in onCreate and onDestroy (letting the type be inferred)
>>>>
>>>>   lazy val (wakeLock, wifiLock) = {
>>>>     val pm = getSystemService(Context.POWER_SERVICE).asInstanceOf[
>>>> PowerManager]
>>>>     val wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
>>>> "ClientWakeLock")
>>>>     wakeLock.acquire()
>>>>     val wm = getSystemService(Context.WIFI_SERVICE).asInstanceOf[
>>>> WifiManager]
>>>>     val wifiLock = wm.createWifiLock(WifiManager.WIFI_MODE_FULL,
>>>> "ClientWifiLock")
>>>>     wifiLock.acquire()
>>>>     (wakeLock, wifiLock)
>>>>   }
>>>>
>>>> but I'm wondering if there's some other way so that I can declare the
>>>> type.
>>>>
>>>
>>> What is wrong with the type (WakeLock, WifiLock)?
>>>
>>>   Sam
>>> ​
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "scala-on-android" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to scala-on-android+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "scala-on-android" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to scala-on-android+unsubscr...@googlegroups.com.
>> For more options, visit https://groups.google.com/d/optout.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"scala-on-android" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to scala-on-android+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to