Your data Local Files - AxelFougues/ZINC-public-resources GitHub Wiki

Adding your own content to some of ZINC's features (like custom game levels) requires copying your files to the app's storage. The app's storage can be found at /storage/emulated/<userid>/Android/data/com.AzApps.ZINC/files on most devices (some older phones might point to a location on the SD card if present).

Some Android file explorers might hide the contents of Android/Data to protect your feelings or something. Try another file explorer app or use your PC.

📑User database

All user generated data is stored in a local SQLite database file userLocalDB.db. This file contains all the user information that the app needs to store and can be opened, read and modified with any free database tool like SQLiteStudio. Although we do not recommend modifying the data unless you understand what you are doing. If deleted, all user data will be lost and an empty one will be generated automatically.

This is the only file that needs to transferred to a new device or backed up.

Structure

DBVersion

ID version
int string

DBPoints

ID points
int int

DBUpgrade

ID readableName isCustom productID location installDate description
int string bool int string dateTime string

DBProduct

ID readableName url imageURL type releaseDate xSizeMM ySizeMM zSizeMM tags description isCustom customBrandName
int string string string productType dateTime float float float productTags string bool string

DBHapticTestEntry

ID test wave timestamp upgradeId priority completions amplitude frequency gap duration
int testType waveType dateTime int int int float float float float

DBNdefRecord

ID tnf domainDataType domain mimeType uri textEncoding packageName text simpleRecordType recordID payload recordType languageCode
int typeNameFormat string string string string textEncoding string string simpleRecordType hex hex hex languageCode

📑ZINC database

All of ZINC's data is stored in a local SQLite database file zincLocalDB.db. This file contains all the information that the app displays in the various features and modified with any free database tool like SQLiteStudio. This file will change and be overridden on each new update. If deleted it will automatically re-generate with the original data. The tables and fields in the ZINC database are self-explanatory and won't be listed here for now.

Structure

DBVersion

ID version
int string

DBProduct

ID readableName url imageURL type releaseDate xSizeMM ySizeMM zSizeMM tags description isCustom customBrandName
int string string string productType dateTime float float float productTags string bool string

DBBrand

ID readableName url
int string string

DBProduct_Brand

productId brandId
int int

DBReference

ID readableName url rss author tags
int string string string string referenceTags

Database format specifications

  • bool: 0/1
  • dateTime: yyyy-MM-dd hh:mm:ss
  • productType: subdermal/wearable/transdermal/mod/prosthetic/accessory/implement/other
  • productTag: none/LF,HF,led,glow,magnet,sensor,payment,esthetic,medical,software,hardware
  • typeNameFormat: EMPTY/WELL_KNOWN/MIME/ABSOLUTE_URI/EXTERNAL/UNKOWN
  • textEncoding: UTF8/UTF16
  • simpleRecordType: None/Text/Application/External/Mime/URI
  • languageCode: en
  • referenceTags: none/wiki,news,social,media,blog,data,map,vendor,tool

🔮Bubble Worlds

File naming and location

Custom Bubble world maps can be placed in BubbleWorlds\. The file name will be used as a display name in ZINC.

To learn how to make your own maps go to the Bubble Worlds page.

File structure example

Custom layer properties example file

{
   "properties":[
      {
         "directional":false,
         "globalAmplitudeEffect":0,
         "sineAmplitudeEffect":0,
         "sineFrequencyEffect":0,
         "squareAmplitudeEffect":0,
         "squareFrequencyEffect":0,
         "sawAmplitudeEffect":0,
         "sawFrequencyEffect":0,
         "ampModFrequencyEffect":0,
         "freqModfrequencyEffect":0,
         "freqModIntensityEffect":0,
         "isFailure":false,
         "isSuccess":false,
         "triggerIsMax":true,
         "needsEvaluation":false
      },
      {
         "directional":false,
         "globalAmplitudeEffect":0,
         "sineAmplitudeEffect":0,
         "sineFrequencyEffect":0,
         "squareAmplitudeEffect":0,
         "squareFrequencyEffect":0,
         "sawAmplitudeEffect":0,
         "sawFrequencyEffect":0,
         "ampModFrequencyEffect":0,
         "freqModfrequencyEffect":0,
         "freqModIntensityEffect":0
         "isFailure":false,
         "isSuccess":false,
         "triggerIsMax":true,
         "needsEvaluation":false
      },
      {
         "directional":false,
         "globalAmplitudeEffect":1,
         "sineAmplitudeEffect":0,
         "sineFrequencyEffect":0,
         "squareAmplitudeEffect":0,
         "squareFrequencyEffect":0,
         "sawAmplitudeEffect":0,
         "sawFrequencyEffect":0,
         "ampModFrequencyEffect":0,
         "freqModfrequencyEffect":0,
         "freqModIntensityEffect":0
         "isFailure":false,
         "isSuccess":false,
         "triggerIsMax":true,
         "needsEvaluation":false
      },
      {
         "directional":false,
         "globalAmplitudeEffect":0,
         "sineAmplitudeEffect":0,
         "sineFrequencyEffect":0,
         "squareAmplitudeEffect":0,
         "squareFrequencyEffect":0,
         "sawAmplitudeEffect":0,
         "sawFrequencyEffect":0,
         "ampModFrequencyEffect":0,
         "freqModfrequencyEffect":0,
         "freqModIntensityEffect":0
         "isFailure":false,
         "isSuccess":false,
         "triggerIsMax":true,
         "needsEvaluation":false
      }
   ],
   "baseSignal":{
      "globalAmplitude":0.0,
      "sineAmplitude":1.0,
      "sineFrequency":200.0,
      "squareAmplitude":0.0,
      "squareFrequency":0.0,
      "sawAmplitude":0.0,
      "sawFrequency":0.0,
      "ampModFrequency":0.0,
      "freqModFrequency":0.0,
      "freqModAmplitude":0.0
   }
}
  • properties: The sets of properties for Red, Green, Blue and Alpha layers in that order.
    • directional: Should the layer be sampled using directionality or simply by value, see Bubble Worlds page.
    • [X]Effect: The type of effect function that will be applied to the X parameter by the layer sample, see Bubble Worlds page.
    • isFailure: Should this layer trigger a failure when conditions are met.
    • isSuccess: Should this layer trigger a success when conditions are met.
    • triggerIsMax: If true a maximum value sample will trigger a success/failure. Otherwise a minimum value sample will trigger a success/failure.
    • needsEvaluation: Enables trigger evaluation for this layer. Should be set to isFailure OR isSuccess.
  • baseSignal: The default parameters the output should hold while not being effected.

Effect Types (Functions)

 public enum EffectType { 
   None, 
   Linear, 
   EaseOut, 
   EaseIn, 
   EaseInOut, 
   Step 
 }

Recommended frequency values are between 50 and 500 Hz while amplitudes are always normalized (0.0 to 1.0)

📫Remote

Files in Remote\ are extra content that has been synced from the web. For example, ZINC has an internal core database of products but if new products come out and ZINC is not ready to update then the new products can be added online and they will be pulled and merged automagically.

⚠️They can be deleted as they will be downloaded again anyway. But avoid modifying them as you could break things.

⚠️ **GitHub.com Fallback** ⚠️