|
Exporting jar as a dependency in Android Studio
Step 1: Navigate to the Project Structure on the left.
Step 2: Switch to 'Project' form 'Android' by selecting the dropdown.
Step 3: Select the 'libs' folder within the 'app' directory.
Step 4: Copy the downloaded JAR and paste it into 'libs' directory.
|
|
|
|
|
What are the factors that decide the cost to develop an Android mobile app?
|
|
|
|
|
1) How many hours it will take to develop.
2) How much you will charge for each of those units.
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
|
|
|
|
|
The cost of developing an android app depends on:
1. The platform: On which platform you want to live your app android or ios.
2. The features: What features do you want or need to include in your app?
3. Approach: What do you want to hire a freelancer or an IT company?
4. Application Complexity: you want a basic, mid, or high-level app
5. Application Maintenance: includes updates, security bus, and OS.
|
|
|
|
|
|
I know that there are similar question like this, but none of the solutions work for me.
I want to create a folder in my root directory like whatsapp but i did not get it to work.
I was able to create a folder in my package folder but same method did not work for root directory
File pk = new File(this.getExternalFilesDir("/myweb").getAbsolutePath());
pk.mkdir();
File root = new File(Environment.getExternalStorageDirectory() + "/myweb");
root.mkdir();
How can i solve this problem
|
|
|
|
|
|
You can easily create folder in root folder by downloading ES file explorer. Just enable hidden files. You can refer to
mcafee activate for more information.
|
|
|
|
|
I am trying to emulate the behaviour of the user when he receives a whatsapp call and answers it.
To do this I understand I need to access the notification system, this however I don't know how to do this, I can't find anywhere where it is explained.
On the contrary there are a lot of people on the net who explain how to create notifications for your app, but I don't need that.
Continuing with the reasoning, there should be a function that alerts me if a notification has arrived, at which point a query is made to identify the type of notification, based on the source of the package (com.whatsapp) and the mimetype of the intent.
If it passes this check, i.e. it is a whatsapp call, the "reply" button option is selected.
So it's all very general anyway, but it's to introduce you to the reasoning I've done, if this is already wrong please let me know, as well as if you know of better options.
Thanks
|
|
|
|
|
|
Hi Richard,
I had read this guide, but as you can see there is no indication of how to read the notification of a third-party app, there are only instructions on how to create notifications and how the notification is structured in your phone.
Do you know any example applications even if only to read notifications as objects?
Thanks
|
|
|
|
|
Sorry, no. This is a question for Google I am afraid.
|
|
|
|
|
I thought so, but I have been searching for a week with different keywords without success.
Surely there is a way, I just need to find someone who has used it for some project.
|
|
|
|
|
|
That would have been handy, unfortunately 'Notification listeners cannot get notification access'.
Edit: But by searching for that library I found this link which fulfils at least half of my request, so thank you.
https://www.learn2crack.com/2014/11/reading-notification-using-notificationlistenerservice.html
Thanks anyway for your availability
modified 2-Aug-21 5:13am.
|
|
|
|
|
I would think if you could access the notifications of other apps, that would be a sizeable security issue. Imagine being able to "answer" another app's notifications without user intervention!
"One man's wage rise is another man's price increase." - Harold Wilson
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
"You can easily judge the character of a man by how he treats those who can do nothing for him." - James D. Miles
modified 2-Aug-21 11:33am.
|
|
|
|
|
Notifications are handled by the device, no information is sent that could affect security, the user can only interact with what the apps provide.
For this there are public APIs and deep links, it is no problem to use them, you just need to know how.
What I want to do is to simulate user interaction programmatically, so without using inaccessible private app methods, but with native device functions.
|
|
|
|
|
HI, i have created a time lapse camera app that collects images during daylight hours and uploads those images to an FTP server. I now need to add a method to prolong battery life by waking up the cpu at a specific time, collect an image, then go back to sleep between image collections (15 - 20 mins) then stay asleep at night, this is repeated on a daily basis.
The AlarmManager class might be the way to go but my programming skills aren't great. This class has an example that (i think) could wake the cpu at a given time then use the setRepeating method to wake up the device every x minutes after that. Is this correct? However i need it to stop doing that at night and repeat each day, is this possible?
Any advice on this and/or example code to get me started would be much appreciated.
Cheers.
|
|
|
|
|
Caveat - I know nothing about mobile development but it seems to me that putting the cpu to sleep and then asking it to run the alarm manager (while asleep) seems to be a disconnect somewhere!
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
Not necessarily. Many (probably almost all) devices have low power sleep modes that can be woken from by real time clock interrupts (and other interrupts, like a pushbutton). So setting a time-of-day alarm and going to sleep is a very effective strategy for minimising power consumption.
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
Hence the caveat - ty
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
I have an Amazon affiliate site & I want to make an app for this where users can easily find Amazon Coupons in India & get notification as soon as the new coupon deal or promo code arrives in our database.
Please help me understand the technology I should use in my programming & UX.I want to build a fast, efficient and user friendly application for my users.
|
|
|
|
|
You need to hire a guy who will code this app for you.
|
|
|
|
|
Hi
For example, deem I have a rectangle and a button. I want to place the button inside the rectangle with a relative distance from all four sides of the rectangle so that in any screen size, these relations are kept. Please write me a sample XAML code to study.
Thanks.
|
|
|
|
|
<pre lang="Kotlin"><pre>package com.example.cryptotracker
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.activity_main.*
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
class MainActivity : AppCompatActivity() {
private lateinit var mAdapter :CryptoAdapter
private var crypto1 = mutableListOf<Crypto>()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mAdapter = CryptoAdapter(this,crypto1)
recyclerView.adapter = mAdapter
recyclerView.layoutManager = LinearLayoutManager(this)
getCrypto()
}
private fun getCrypto() {
val crypto:Call<CryptoList> = CryptoService.cryptoInstance.getExchanges()
crypto.enqueue(object : Callback<CryptoList> {
override fun onResponse(call: Call<CryptoList>, response: Response<CryptoList>) {
val crypto:CryptoList? = response.body()
if(crypto!=null)
{
Log.d("THISSSSS",crypto.toString())
crypto1.addAll(crypto.crypto1)
mAdapter.notifyDataSetChanged()
}
}
override fun onFailure(call: Call<CryptoList>, t: Throwable) {
Log.d("ERRRRRROR","ERROR IN FETCHING",t)
}
} )
}
}</pre></pre>
<pre lang="Kotlin"><pre>package com.example.cryptotracker
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide
class CryptoAdapter(val context:Context, val crypto1:List<Crypto> ):RecyclerView.Adapter<CryptoViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CryptoViewHolder {
val view:View = LayoutInflater.from(context).inflate(R.layout.item_crypto,parent,false)
return CryptoViewHolder(view)
}
override fun onBindViewHolder(holder: CryptoViewHolder, position: Int) {
val current_item:Crypto = crypto1[position]
holder.cryptoName.text = current_item.name
holder.cryptoCountry.text = current_item.country
holder.cryptoUrl.text = current_item.url
holder.cryptoVolume.text = current_item.trade_volume_24h_btc
Glide.with(context).load(current_item.image).into(holder.cryptoImage)
}
override fun getItemCount(): Int {
return crypto1.size
}
}
class CryptoViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
var cryptoName = itemView.findViewById<TextView>(R.id.cryptoName)
var cryptoImage = itemView.findViewById<ImageView>(R.id.cryptoImage)
var cryptoCountry = itemView.findViewById<TextView>(R.id.cryptoCountry)
var cryptoUrl = itemView.findViewById<TextView>(R.id.cryptoUrl)
var cryptoVolume = itemView.findViewById<TextView>(R.id.cryptoVolume)
}</pre></pre>
<pre lang="Kotlin"><pre>package com.example.cryptotracker
import retrofit2.Call
import retrofit2.Retrofit
import retrofit2.http.GET
import retrofit2.create
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.Query
const val BASE_URL = "https://api.coingecko.com/"
interface CryptoInteface {
@GET("api/v3/exchanges")
fun getExchanges(): Call<CryptoList>
}
object CryptoService {
val cryptoInstance: CryptoInteface
init {
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create())
.build()
cryptoInstance = retrofit.create(CryptoInteface::class.java)
}
}</pre></pre>
<pre lang="Kotlin"><pre>package com.example.cryptotracker
data class CryptoList (
val crypto1:List<Crypto>
)</pre></pre>
<pre lang="Kotlin">package com.example.cryptotracker
data class Crypto (
val name:String,
val country:String,
val url:String,
val image:String,
val trade_volume_24h_btc:String,
val trade_volume_24h_btc_normalized:String
)</pre>
<pre lang="text">com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:226)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:40)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:153)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:174)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:386)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:215)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:40)
at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27)
at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243)
at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:153)
at okhttp3.RealCall$AsyncCall.execute(RealCall.java:174)
at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:764) </pre>
|
|
|
|